私はこれをずっと見てきました。私は何をしているのか分かりません。私はC#で2つのデータテーブルをループし、正確に一致しないかtable1
に含まれていないtable2
の項目のリストを作成しようとしています。しかし、私はtable2
アイテムの完全なリストを取得し続けています。私が見ることができない愚かな論理エラーです。私はここで行方不明を誰も見ることができますか?違いを見つけるためにDataTableをループする
大変ありがとうございます。
string results = null;
foreach (DataRow row1 in table2.Rows)
{
int x = 0;
foreach (DataRow row2 in table1.Rows)
{
var array1 = row1.ItemArray;
var array2 = row2.ItemArray;
if (array1.SequenceEqual(array2))
{
x = 1;
break; // get out of the loop and continue
}
else
{
continue;
}
}
if (x == 0)
{
results = results + (row1["Drug"]);
}
}
クエリでこれを行うべきではありませんか?テーブル2の行数が同じでなく、テーブル1と同じ順番になっていない場合は、このように繰り返し実行することはできません。また、あなたのコードが 'IEqualityComparer'を実装していない限り、SequenceEqualはデータだけでなく参照も同じであると比較します。 https://msdn.microsoft.com/en-us/library/bb348567(v=vs.100).aspx –
jac
ブレークポイントを配置しようとすると、 'x == 0'が常に真であることに気づいたでしょう'array1.SequenceEqual(array2)'は決して真ではないからです。また、結果がnullで、 '(row1 [" Drug "])'を追加しているので、 –