7

リストオブジェクトの複数の値を設定する方法、私は次のことをしていますが失敗します。

objFreecusatomization
.AllCustomizationButtonList
.Where(p => p.CategoryID == btnObj.CategoryID && p.IsSelected == true && p.ID == btnObj.ID)
.ToList()
.ForEach(x => x.BtnColor = Color.Red.ToString(),  );

最後にコンマの後に別の値を設定したい。関連するレコードは 1 つしかありませんが、表現はどうあるべきですか。

4

1 に答える 1

16

個人的には、とにかくそのようにコードを書くつもりはありませんが、ステートメント lambdaを使用するだけです:

ステートメント lambda は式 lambda に似ていますが、ステートメントが中かっこで囲まれている点が異なります

ステートメント lambda の本体は、任意の数のステートメントで構成できます。ただし、実際には、通常は 2 つまたは 3 つしかありません。

したがって、ForEach呼び出しは次のようになります。

.ForEach(x => {
    x.BtnColor = Color.Red.ToString();
    x.OtherColor = Color.Blue.ToString();
});

foreachただし、代わりにループを記述します。

var itemsToChange = objFreecusatomization.AllCustomizationButtonList
     .Where(p => p.CategoryID == btnObj.CategoryID
                 && p.IsSelected
                 && p.ID == btnObj.ID);

foreach (var item in itemsToChange)
{
    item.BtnColor = Color.Red.ToString();
    item.OtherColor = Color.Blue.ToString();
}

foreach(クエリをステートメント自体にインライン化することもできますが、個人的には、別のローカル変数を使用する上記のアプローチの方が明確です。)

于 2013-08-23T12:35:32.983 に答える