假设我有document
表,doc_id
(PK)和doc_name
字段,category
表cat_id
(PK)和{{ 1}}字段,以及cat_name
(PK,FK)和document_categories
(PK,FK)字段的doc_id
表,因此我可以将一个或多个类别归于每个文档。< / p>
我已经在&#34;数据库优先&#34;中生成了一个带有EF6的模型。模式,它为我提供了两个实体:cat_id
和document
,每个实体都包含一个子集合的字段。
category
包含document
字段,其中列出了文档的类别,反之亦然。
现在,我想查询包含类别1和类别2的所有文档。 我们假设数据库包含以下文档:
文件A:类别1,3 文件B:类别1,2 C编:类别1 Doc D:类别1,2,3
我的查询应该返回文档B和D.
如何使用Linq使用EF6实现这一目标?
在此网站和Google上进行了长时间搜索,但未发现此特定请求...感谢您的帮助
答案 0 :(得分:2)
使用此:
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;