Linq与3桌上的联盟

Nat*_*Pet 3 linq union

我喜欢使用linq在3个表上进行联合.不确定为什么类似下面的东西不起作用:

var repdata = (from p in db.Table1
               select p)
                       .Union(from p in Table2
                        select p);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 11

Union仅适用于相同的元素类型.你可以使用:

var data = db.Table1.Select(p => new { p.Value1, p.Value2 })
     .Union(db.Table2.Select(q => new { q.Value1, q.Value2 })
     .Union(db.Table3.Select(r => new { Value1 = r.Alias1, Value2 = r.Other }); 
Run Code Online (Sandbox Code Playgroud)

这里匿名类型用作将所有三个表投影到的公共类型,以便Union可以工作.