如果我从不同的linq Query中得到两个结果IQueryable并且我想将它们合并在一起并返回一个结果,那么如何? 例如,如果:
var q1 = (IQueryable<Person>).....;
var q2 = (IQueryable<Person>).....;
如何将q1和q2合并在一起并得到像
这样的结果var q = (IQueryable<Person>)q1.Union(q2);
答案 0 :(得分:25)
你拥有它,q1.Union(q2)
。 Union位于带有Queryable的System.Linq命名空间中。
答案 1 :(得分:16)
您可以尝试使用Concat方法
像这样的东西
int[] i1 = new int[] { 1, 2, 3 };
int[] i2 = new int[] { 3, 4 };
//returns 5 values
var i3 = i1.AsQueryable().Concat(i2.AsQueryable());
//returns 4 values
var i4 = i1.AsQueryable().Union(i2.AsQueryable());
Union 只会为您提供 DISTINCT 值,Concat会为您提供 UNION ALL 。
答案 2 :(得分:2)
(q1.Union(q2)).AsQuerable()
答案 3 :(得分:2)
使用NHibernate Union是不可能的。
您必须在客户端进行处理,而不是DB处理联合。 我使用AsEnumerable将IQueryable转换为IENumerable,然后使用Concat扩展。
var allItems = q1.AsEnumerable()。Concat(q2)
此致 塞巴斯蒂安