pom*_*ber 2 c# linq iqueryable
附:
var q1 = (IQueryable<T>).....;
var q2 = (IQueryable<T>).....;
var q3 = (IQueryable<T>).....;
var qList = new List<IQueryable<T>>{q1, q2, q3};
Run Code Online (Sandbox Code Playgroud)
我想做这个:
var q = q1.Union(q2).Union(q3);
Run Code Online (Sandbox Code Playgroud)
但使用qList而不是使用q1,q2和q3.我尝试过,qList.SelectMany但行为是不同的(可查询是对数据库SelectMany的查询,并为每个可查询而不是只查询一个查询).
您可以使用Aggregate扩展方法:
var q = qList.Aggregate((x, y) => x.Union(y));
Run Code Online (Sandbox Code Playgroud)
或者按照Thomas Levesque的建议:
var q = qList.Aggregate(Queryable.Union);
Run Code Online (Sandbox Code Playgroud)
这将选择第一个项目qList,将其与第二个项目合并,将结果与第三个项目合并,依此类推qList.请注意,这实际上并不涉及评估任何IQueryable<T>一个,只是构建一个IQueryable<T>代表其他人联合的新东西.
| 归档时间: |
|
| 查看次数: |
392 次 |
| 最近记录: |