私は2つのリストを持っています
リストA リストB ID FirstName DepartmentID ID FirstName DepartmentID 5 ピーター ヌル 5 ピーター 1 9 スティーブ ヌル 9 スティーブ 2 16 マーク ヌル 16 マーク 3
LINQ を使用してこれらのリストを比較し、両方のリストの ID が等しい場合は、最初のリストである A リストに DepartmentID を設定します。
前もって感謝します。
ListA.ForEach(a=>a.DepartmentID = ListB.Any(b=>b.ID == a.ID) ? ListB.First(b=>b.ID == a.ID).DepartmentID : null);
編集:nullをチェックしたい場合。
あなたはそれらに参加することができます。次に、結果を列挙し、変更を保存します。
var results = from a in ListA
join b in ListB on ai.ID equals bi.ID
select new
{
itemA = a,
itemB = b
};
foreach(var result in results)
{
// This was not listed as a requirement, but it may be a valid check
if (itemA.FirstName == itemB.FirstName)
{
itemB.DepartmentID = itemA.DepartmentID;
}
}
DataContext.SubmitChanges();
別のリストを使用して次のコードを使用して何ができるか
var temp = from ai in ListA
join bi in ListB on ai.id equals bi.id
select bi;
var ListC = temp.ToList();
var replacements = ListA
.Where(a => a.DepartmentID == null)
.Join(ListB,
a => a.ID,
b => b.ID,
(a, b) => new { Source = a, Replacement = b }
);
foreach (var item in replacements)
{
// here you could perform more replacements
item.Source.DepartmentID = item.Replacement.DepartmentID;
}