EF6如何查询子列表中包含所有值的位置 [英] EF6 How to query where children contains all values of a list
本文介绍了EF6如何查询子列表中包含所有值的位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我有一个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;
这篇关于EF6如何查询子列表中包含所有值的位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文