これは長年にわたる解決策ですが、私はそれをテストして動作します。
私は、各テーブルのPOCOオブジェクトを作成してから、エラーの可能性が高いTable1 ["CarReg"]を使用するよりもパブリックプロパティでの再生が容易であるようにdifneceを作成しました。
誰かがこの解決方法を改善する可能性があります。
あなたのテーブルは次のようにPOCOクラスで表現されるようにしましょう:データを取り込むことができます
public class Table1
{
public string CarReg { get; set; }
public string Site { get; set; }
public double Route { get; set; }
public string Driver { get; set; }
public string DateString { get; set; }
}
public class Table2
{
public string CarReg { get; set; }
public string Site { get; set; }
public double Route { get; set; }
public string Driver { get; set; }
public string Kilos { get; set; }
}
:
IEnumerable<Table1> data1 = new List<Table1>()
{
new Table1() { CarReg = "123ABC", DateString = "20/02/2018", Driver = "Driver 1", Route = 45.45, Site = "England" },
new Table1() { CarReg = "456ABC", DateString = "20/03/2018", Driver = "Driver 2", Route = 55.45, Site = "Scotland" },
new Table1() { CarReg = "789ABC", DateString = "20/04/2018", Driver = "Driver 3", Route = 65.45, Site = "Wales" },
};
IEnumerable<Table2> data2 = new List<Table2>() {
new Table2() { CarReg = "123XYZ", Kilos = "34KG", Driver = "Driver 5", Route = 45.45, Site = "Karachi" },
new Table2() { CarReg = "456ABC", Kilos = "44KG", Driver = "Driver 2", Route = 55.45, Site = "Scotland" },
new Table2() { CarReg = "789CCC", Kilos = "54KG", Driver = "Driver 7", Route = 65.45, Site = "Hyderabad" },
};
結果データを保持するのリストを作成します。
List<Table1> oneList = new List<Table1>();
を
テーブル2にない行を識別するためのループスルー
bool matchFound = false; // an indicator if match is found in table 2
foreach (var item in data1)
{
foreach (var item2 in data2)
{
if (item.CarReg != item2.CarReg)
{
matchFound = false;
}
else
{
matchFound = true;
break;
}
}
if (!matchFound)
{
if (!oneList.Contains(item))
{
oneList.Add(item);
}
}
}
このヘルプが必要です。
Table2の一致するCarRegを持たないTable1のすべてのレコードが必要ですか? –
@ YawarMurtazaはい、Table2の一致するCarRegを持たないTable1のすべてのレコードが必要です。これを簡単な英語の文章で指定していただきありがとうございます。 –