7

如何设置列表对象的多个值,我正在执行以下操作但失败了。

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

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

4

1 回答 1

16

好吧,就我个人而言,无论如何我都不会那样编写代码-但是您可以只使用语句 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语句本身,但我个人发现上述方法使用单独的局部变量更清晰。)

于 2013-08-23T12:35:32.983 回答