C# 使用 Linq 连接具有 2 个相同列的 2 个表
Posted
技术标签:
【中文标题】C# 使用 Linq 连接具有 2 个相同列的 2 个表【英文标题】:C# Using Linq to join 2 tables with 2 same columns 【发布时间】:2012-09-13 18:52:39 【问题描述】:我想加入 2 个表,它们有 2 个相同的列。我已经尝试过了,但在新 等于新 时出现错误。
我的代码:
var results = from table1 in table.AsEnumerable()
join table2 in comment.AsEnumerable()
//Comment
on new table1.Field<string>("SignalName"), table1.Field<int?>("MessageID")
equals new table2.Field<string>("SignalName"), table2.Field<int?>("MessageID")
into prodGroup
from table3 in prodGroup.DefaultIfEmpty()
select new
// something is there
;
【问题讨论】:
【参考方案1】:试试……
var results = from r1 in table.AsEnumerable()
join r2 in comment.AsEnumerable()
on new
signal=r1.Field<string>("SignalName"),
message=r1.Field<int?>("MessageID")
equals new
signal=r2.Field<string>("SignalName"),
message=r2.Field<int?>("MessageID")
into prodGroup
from r3 in prodGroup.DefaultIfEmpty();
【讨论】:
【参考方案2】:尝试命名匿名类型的属性。
来自 MSDN:
因为匿名类型的 Equals 和 GetHashCode 方法是根据属性的 Equals 和 GetHashcode 方法定义的,所以相同匿名类型的两个实例只有在它们的所有属性都相等时才相等。
【讨论】:
以上是关于C# 使用 Linq 连接具有 2 个相同列的 2 个表的主要内容,如果未能解决你的问题,请参考以下文章