我有一个列表,其中有一个“活动”属性,我想将其设置为1仅限于一个项目,并设置为0到所有其他项目。
在Linq中哪种方式最聪明?我知道我可以将所有项目设置为0,然后将1设置为当前,但我问是否有更好的方法来执行此操作。
谢谢!!侨
答案 0 :(得分:4)
我不确定LINQ在这里特别有用......怎么样:
foreach (var item in list)
{
item.Active = (item == desiredActiveItem ? 1 : 0);
}
答案 1 :(得分:2)
我同意Jon的观点,但如果你想使用LINQ,你可以这样做:
list = list.Select(i => { i.Active = (i == desiredActiveItem ? 1 : 0);
return i; }).ToList();
这表明在这里不使用LINQ确实是个好主意。
答案 2 :(得分:1)
作为对Daniel的回应,如果你必须使用linq,那只是一种变态。至少只是用它来找到该项目,然后采取行动。
var item = list.FirstOrDefault**(i => i == desired);
if (item != null)
{
item.Active = true;
}
**可能会更改为First
,Single
或SingleOrDefault
,具体取决于列表的性质。