web-dev-qa-db-ja.com

linq / lambdaの複数行のforeachループ

次のコードを変更する方法を探しています。

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行で実行する関数を記述する以外にありますか?

38
Seph
contacts.ForEach(c => { c.ID = 0; c.GroupID = 0; c.CompanyID = 0; });

LINQ自体とは何の関係もありません。これは、List<T>.ForEach関数に渡されるラムダ構文で記述された単純な匿名メソッドです(2.0以降、LINQより前に存在していました)。

65
Mehrdad Afshari

LINQは、Language IntegratedQueryの略です。つまり、queryingを対象としています。つまり、オリジナルを操作するのではなく、新しいセットにシーケンスします。

ForEachメソッドがハングするList<T> およびforeachへの便利なショートカットです。特にない。

3
Rex M