与:
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
而不是使用 q1
、q2
和 q3
。我尝试使用 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/