【问题标题】:C# Using Linq to join 2 tables with 2 same columnsC# 使用 Linq 连接具有 2 个相同列的 2 个表
【发布时间】: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
    };

【问题讨论】:

    标签: c# linq join var


    【解决方案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 方法定义的,所以相同匿名类型的两个实例只有在它们的所有属性都相等时才相等。

      【讨论】:

        猜你喜欢
        • 2013-04-19
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多