0

私は2つのデータテーブルを持っていsendTableますrecvTable

どちらも同じ列名と列数を持っています

"NODE" "DSP Name" "BUS" "IDENT" "STATION" "REF1" "REF2" "REF3" "REF4" "REF5" "REF6" "REF7" "REF8"

これら 2 つのテーブルを比較し、不一致を分離して、列 3 ~ 11 のみをチェックし、列 1 と列 2 を無視する必要があります。

最初に2つの列を削除してから、行ごとにループして一致と不一致を返しましたが、このアプローチの問題は、結果を確定するときに行に関連付けられた「NODE」と「DSP名」がなくなったことです

だから私はクエリで助けが必要です

これが私の試みです

var samerecordQuery = from r1 in sendTable.AsEnumerable()
                      where r1.Field<int>("BUS").Equals(from r2 in recvTable.AsEnumerable() where r2.Field<int>("BUS"))   

これは明らかに機能しないので、クエリをどのようにフォーマットすればよいですか

from r1 cols[3-11] equals r2 cols [3-11] 

これを取得したら、例外を使用して不一致を取り除くことができます

4

2 に答える 2

1

お役に立てれば

var matched = from s in sendTable.AsEnumerable()
              join r in recvTable.AsEnumerable() on
              new {BUS = s.Field<int>("BUS"), IDENT = s.Field<int>("IDENT"),...} equals
              new {BUS = r.Field<int>("BUS"), IDENT = r.Field<int>("IDENT"),...}
              select new {Send = s, Receive = r};

これは、必要な列に基づいて両方のテーブルのレコードと一致し、グループ化された一致したレコードを返します。

于 2012-12-12T19:49:59.653 に答える
-1

これが私の解決策です

var matched = from s in sendTable.AsEnumerable()
                     join r in recvTable.AsEnumerable() on
                     new { BUS = s.Field<int>("BUS"), 
                           IDENT = s.Field<int>("IDENT"), 
                           STATION = s.Field<int>("STATION"), 
                           REF1 = s.Field<string>("REF1"), 
                           REF2 = s.Field<string>("REF2"),
                           REF3 = s.Field<string>("REF3"),
                           REF4 = s.Field<string>("REF4"),
                           REF5 = s.Field<string>("REF5"),
                           REF6 = s.Field<string>("REF6"),
                           REF7 = s.Field<string>("REF7"),
                           REF8 = s.Field<string>("REF8") } equals
                      new { BUS = r.Field<int>("BUS"), 
                           IDENT = r.Field<int>("IDENT"), 
                           STATION = r.Field<int>("STATION"), 
                           REF1 = r.Field<string>("REF1"), 
                           REF2 = r.Field<string>("REF2"),
                           REF3 = r.Field<string>("REF3"),
                           REF4 = r.Field<string>("REF4"),
                           REF5 = r.Field<string>("REF5"),
                           REF6 = r.Field<string>("REF6"),
                           REF7 = r.Field<string>("REF7"),
                           REF8 = r.Field<string>("REF8") } 
                     select new { Send = s, Receive = r };
于 2012-12-18T14:18:10.877 に答える