c# - IQueryables 列表的并集

标签 c# linq iqueryable

与:

var q1 = (IQueryable<T>).....;
var q2 = (IQueryable<T>).....;
var q3 = (IQueryable<T>).....;

var qList = new List<IQueryable<T>>{q1, q2, q3};

我想这样做:

var q = q1.Union(q2).Union(q3);

但使用 qList 而不是使用 q1q2q3。我尝试使用 qList.SelectMany 但行为不同(可查询是对数据库的查询,而 SelectMany 对每个可查询进行查询,而不仅仅是一个查询)。

最佳答案

您可以使用 Aggregate 扩展方法:

var q = qList.Aggregate((x, y) => x.Union(y));

或关注 Thomas Levesque 的 suggestion :

var q = qList.Aggregate(Queryable.Union);

这将从 qList 中选取第一项,将它与第二项结合,将结果与第三项结合,等等 qList 中的每一项。 .请注意,这实际上并不涉及评估任何 IQueryable<T>的,只是构建一个新的 IQueryable<T>代表其他人的联合。

关于c# - IQueryables 列表的并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19437067/

相关文章:

c# - IQueryable查询数据数

c# - 生成 SelectListItem 列表的 IQueryable 扩展方法

c# - 在 SSH 隧道中创建转发端口

c# - 包含具有无限循环的线程的对象的垃圾收集

c# - 比如使用动态 lambda 表达式搜索日期时间字段

c# - 使用 LINQ 创建数据间隔

c# - Emacs typeover skeleton-pair-insert-maybe

c# - 确定从分数的一部分中给多少颗星

vb.net - c# linq 到 vb 的翻译 - 使用 'selectmany' 语句在智能感知中重载解析失败