EF6 如何查询子项包含列表所有值的位置
EF6 How to query where children contains all values of a list
假设我有一个 document
table,带有 doc_id
(PK) 和 doc_name
字段,category
table 带有 cat_id
(PK) 和 cat_name
字段,以及 document_categories
table 和 doc_id
(PK, FK) 和 cat_id
(PK, FK) 字段, 因此我可以将一个或多个类别归于每个文档。
我在 "Database first" 模式下使用 EF6 生成了一个模型,它为我提供了两个实体:document
和 category
,每个实体都包含一个字段,该字段是子项的集合。
document
包含一个 categories
字段,该字段列出了文档的类别,反之亦然。
现在,我想查询包含类别 1 和类别 2 的所有文档。
假设数据库包含以下文档:
文档 A:类别 1、3
文件 B:类别 1、2
C 文件:类别 1
文件 D:类别 1、2、3
我的查询应该 return 文档 B 和 D。
如何使用 Linq 通过 EF6 实现这一点?
在此站点和 Google 中搜索了很长时间,但没有找到适合此特定请求的任何内容...感谢您的帮助
使用这个:
var ids = new int[]{1,2};
var docs = context.Documents
.Where(d=> ids.All(cid=> d.Categories.Any(dc=>dc.cat_id == cid))).ToList();
或者
var ids = new int[]{1,2};
var result = from d in context.Documents
where ids.All(id => d.Categories.Any(dc=> dc.cat_id == id))
select s;
假设我有一个 document
table,带有 doc_id
(PK) 和 doc_name
字段,category
table 带有 cat_id
(PK) 和 cat_name
字段,以及 document_categories
table 和 doc_id
(PK, FK) 和 cat_id
(PK, FK) 字段, 因此我可以将一个或多个类别归于每个文档。
我在 "Database first" 模式下使用 EF6 生成了一个模型,它为我提供了两个实体:document
和 category
,每个实体都包含一个字段,该字段是子项的集合。
document
包含一个 categories
字段,该字段列出了文档的类别,反之亦然。
现在,我想查询包含类别 1 和类别 2 的所有文档。 假设数据库包含以下文档:
文档 A:类别 1、3
文件 B:类别 1、2
C 文件:类别 1
文件 D:类别 1、2、3
我的查询应该 return 文档 B 和 D。
如何使用 Linq 通过 EF6 实现这一点?
在此站点和 Google 中搜索了很长时间,但没有找到适合此特定请求的任何内容...感谢您的帮助
使用这个:
var ids = new int[]{1,2};
var docs = context.Documents
.Where(d=> ids.All(cid=> d.Categories.Any(dc=>dc.cat_id == cid))).ToList();
或者
var ids = new int[]{1,2};
var result = from d in context.Documents
where ids.All(id => d.Categories.Any(dc=> dc.cat_id == id))
select s;