Linq与3桌上的联盟

时间:2011-10-21 19:29:04

标签: linq union

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

var repdata = (from p in db.Table1
               select p)
                       .Union(from p in Table2
                        select p);

1 个答案:

答案 0 :(得分: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 }); 

此处,匿名类型用作将所有三个表投影到的常用类型,以便Union可以正常工作。