Linq 与 3 个表上的联合

标签 linq union

我喜欢使用 linq 在 3 个表上进行联合。
不知道为什么像下面这样的东西不起作用:

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

最佳答案

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能行得通。

关于Linq 与 3 个表上的联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7854353/

相关文章:

sql - UNION 多个存储过程的结果

c# - Silverlight 和 RIA 服务与 LINQ-to-SQL DataContext - 无法使用客户端 linq 查询

c# - Linq 中 OfType 的逆函数?

mysql - 使用 Union 执行更新

php - UNION表查询错误数据

mysql - 从两个表中选择第一行

mysql - 从 MySQL 中的两个表中选择数据

c# - 为什么 Enumerable.Single() 迭代所有元素,即使已经找到多个元素?

c# - LINQ 表达式优化语法?

c# - NHibernate 中的 QueryOver