问题描述
假设我有一个document
表,有doc_id
(主键)和doc_name
字段,category
表有cat_id
(主键)和cat_name
字段,document_categories
表有doc_id
(主键,FK)和cat_id
(主键,FK)字段,所以我可以为每个文档分配一个或多个类别。
我在数据库优先模式下用EF6生成了一个模型,它给我提供了两个实体:document
和category
,每个实体都包含一个字段,该字段是子项的集合。
document
包含categories
字段,该字段列出文档的类别,反之亦然。
现在,我要查询包含类别1和类别2的所有文档。 假设数据库包含以下文档:
单据A:类别1、3 单据B:类别1、类别2 单据:类别1 单据D:类别1、2、3
我的查询应返回文档B和D
如何使用Linq通过EF6实现这一点?
在这个网站和谷歌上搜索了很长时间,但没有找到这个特定的请求...感谢您的帮助推荐答案
使用此命令:
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;