わかりました、私は自分で答えます。
Xaisoft、Linq
クエリは、ラムダ式であろうとクエリ式であろうと、リストを変更するために使用すべきではありません。したがって、あなたのSelect
drivers = drivers.Select(d => { d.id = 0; d.updated = DateTime.Now; return d; }).ToList();
スタイルが悪い。混乱/読み取り不能であり、標準的ではなく、Linq
哲学に反しています。最終結果を達成する別の貧弱なスタイルは次のとおりです。
drivers.Any(d => { d.id = 0; d.updated = DateTime.Now; return false; });
しかし、それが不適切だと言っForEach
ているわけではありません。List<T>
あなたのような場合に使用されますが、ミューテーションとLinq
クエリを混在させないでください。それだけです。私は次のようなものを書くことを好みます:
drivers.ForEach(d => d.updated = DateTime.Now);
そのエレガントでわかりやすい。を扱っていないのでLinq
、混乱することもありません。ラムダ内の複数のステートメント(あなたの場合のように)の構文は好きではありません。物事が複雑になると、少し読みにくくなり、デバッグが難しくなります。あなたの場合、私はまっすぐなforeach
ループを好みます。
foreach (var d in drivers)
{
d.id = 0;
d.updated = DateTime.Now;
}
個人的には、式の終了呼び出しとしてForEach
onが好きです (つまり、代入がクエリではなく実行を意図している場合)。IEnumerable<T>
Linq