2

我想加入 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
    };
4

2 回答 2

4

尝试...

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();
于 2012-09-21T10:50:51.007 回答
1

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

来自 MSDN:

因为匿名类型的 Equals 和 GetHashCode 方法是根据属性的 Equals 和 GetHashcode 方法定义的,所以相同匿名类型的两个实例只有在它们的所有属性都相等时才相等。

于 2012-09-21T10:51:15.783 回答