gpt4 book ai didi

linq - EF6 如何查询子项包含列表所有值的位置

转载 作者:行者123 更新时间:2023-12-05 02:21:52 26 4
gpt4 key购买 nike

假设我有一个 document table ,有 doc_id (PK) 和 doc_name字段,一个 categorycat_id (PK) 和 cat_name字段和一个 document_categoriesdoc_id (PK,FK)和cat_id (PK, FK) 字段,因此我可以将一个或多个类别归于每个文档。

我在“数据库优先”模式下使用 EF6 生成了一个模型,它为我提供了两个实体:documentcategory ,每个包含一个字段,该字段是子项的集合。
document包含 categories列出文档类别的字段,反之亦然。

现在,我想查询包含类别 1 和类别 2 的所有文档。假设数据库包含以下文档:

文件 A:类别 1、3
B 文件:第 1、2 类
Doc C:类别1
D 文件:类别 1、2、3

我的查询应该返回文档 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;

关于linq - EF6 如何查询子项包含列表所有值的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32004712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com