EF6如何查询子列表中包含所有值的位置 [英] EF6 How to query where children contains all values of a list

查看:13
本文介绍了EF6如何查询子列表中包含所有值的位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一个document表,有doc_id(主键)和doc_name字段,category表有cat_id(主键)和cat_name字段,document_categories表有doc_id(主键,FK)和cat_id(主键,FK)字段,所以我可以为每个文档分配一个或多个类别。

我在数据库优先模式下用EF6生成了一个模型,它给我提供了两个实体:documentcategory,每个实体都包含一个字段,该字段是子项的集合。
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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆