2012-09-21 48 views
2

我想加入两个表,它们有两个相同的列。我已经尝试过,但在新{}等于新{}时出错。C#使用Linq来加入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 
    }; 

回答

3

尝试...

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(); 
+0

非常感谢! –

1

尝试命名匿名类型的属性。

从MSDN:

由于上匿名类型的Equals和GetHashCode方法在Equals和属性的GetHashCode方法的术语的定义相同,匿名类型的两个实例是相等仅当所有其属性是平等的。

+0

也感谢你,现在我知道我做错了 –