(小ネタ)2重ループをLINQを使って書く
コレクションが二つあって、片方のコレクションの値で、もう片方のコレクションを検索して処理を行う時に、2重ループを使うことがありますが、これはLINQを使用して書くことも出来ます。
ただしサイト内で言われているように、LINQのメソッド構文で行う場合はSelectManyメソッドを使用するのですが、使い方と理解するのがなかなか難しい。
クエリ式を使用すると、このケースにおいては、SQLを知っていればだいぶ理解しやすくなるのでクエリ式を使用するのが良いようです。
ちなみに、片方のコレクションに含まれているインスタンスに、もう片方のコレクションのインスタンスの値を代入する場合は、以下のようにforeach文を使用した方が楽な気がします。
foreach (var obj in listB) { var single = listA.SingleOrDefault(o => o.Id == obj.Id); if (single == null) { continue; } single.prop1 = obj.prop1; single.prop2 = obj.prop2; }