2012-09-21 53 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

也感謝你,現在我知道我做錯了 –