2

2 つの同じ列を持つ 2 つのテーブルを結合したいと考えています。これを試してみましたが、on new {} equals new {} でエラーが発生しました。

私のコード:

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メソッドで定義されているため、同じ匿名型の2つのインスタンスは、すべてのプロパティが等しい場合にのみ等しくなります。

于 2012-09-21T10:51:15.783 に答える