gpt4 book ai didi

c# - 在一个数据库请求中连接 IQueryable 集合

转载 作者:行者123 更新时间:2023-11-30 14:29:36 25 4
gpt4 key购买 nike

我使用 Entity Framework 。我需要连接两个集合。例如:

IQueryable<SomeType> collection1 = context.Entiies.Where(predicate);
IQueryable<SomeType> collection2 = context.Entiies.Where(otherPredicate);

var result = collection1.concat(collection2).toList(); //1
var result = collection1.union(collection2).toList; //2

变体 1 和变体 2 都将在数据库中执行 2 请求,因为这些方法需要 IEnumerable 作为参数。所以,问题是我可以通过一次数据库调用连接两个 Iqueryble 集合

最佳答案

Concat() Union() IQueryable<T> 的扩展方法除了IEnumerable<T> .您可以在可查询对象上使用它们。 Union()映射到 SQL UNION操作和Concat()映射到 UNION ALL .

只要你不转换 IQueryable<T>反对 IEnumerable<T> (显式或隐式)然后您可以只使用这些方法,如果可能,它们将在数据库中进行评估。

进一步阅读:


在浏览文档时,我忽略了扩展方法在 Queryable 上声明的细节。接受 IQueryable<T>作为第一个参数,但是 IEnumerable<T>作为第二个。正如 D Stanley 指出的那样,这些方法将测试参数是否为 IQueryable<T>。如果是,将尝试使用相关查询引擎解决操作。

关于c# - 在一个数据库请求中连接 IQueryable 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25632591/

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