次のコードを変更する方法を探しています。
foreach (Contact _contact in contacts)
{
_contact.ID = 0;
_contact.GroupID = 0;
_contact.CompanyID = 0;
}
LINQ/lambdaを使用してこれを次のようなものに変更したいと思います。
contacts.ForEach(c => c.ID = 0; c.GroupID = 0; c.CompanyID = 0);
しかし、それはうまくいきません。 linq foreachで複数行を実行する方法は、これを1行で実行する関数を記述する以外にありますか?
contacts.ForEach(c => { c.ID = 0; c.GroupID = 0; c.CompanyID = 0; });
LINQ自体とは何の関係もありません。これは、List<T>.ForEach
関数に渡されるラムダ構文で記述された単純な匿名メソッドです(2.0以降、LINQより前に存在していました)。
LINQは、Language IntegratedQueryの略です。つまり、queryingを対象としています。つまり、オリジナルを操作するのではなく、新しいセットにシーケンスします。
ForEach
メソッドがハングするList<T>
およびforeachへの便利なショートカットです。特にない。