如何使用lambda表达式在列表中设置多个值?

时间:2013-08-23 12:33:51

标签: c# linq

如何设置列表对象的多个值,我正在做以下但是失败。

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

在逗号之后我想设置另一个值。 应该是什么表达,尽管我只有一个记录相关。

1 个答案:

答案 0 :(得分:14)

个人而言,我不会以的方式编写代码 - 但你可以使用statement lambda

  

语句lambda类似于表达式lambda,除了语句用括号括起来

     

语句lambda的主体可以包含任意数量的语句;但实际上,通常不会超过两三个。

所以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语句本身,但我个人发现上述方法使用单独的局部变量更清晰。)