.net LINQ中的互斥属性
我有一个列表,其中有一个“活动”属性,我只想将该属性设置为1以用于某个项目,将其设置为0以用于所有其他项目.net LINQ中的互斥属性,.net,linq,.net,Linq,我有一个列表,其中有一个“活动”属性,我只想将该属性设置为1以用于某个项目,将其设置为0以用于所有其他项目 在Linq,哪种方式最聪明?我知道我可以将所有项目设置为0,而将当前项目设置为1,但我想知道是否有更好的方法。我不确定LINQ在这里是否特别有用。。。那么: foreach (var item in list) { item.Active = (item == desiredActiveItem ? 1 : 0); } 我同意Jon的观点,但如果你想使用LINQ,你可以这样做:
在Linq,哪种方式最聪明?我知道我可以将所有项目设置为0,而将当前项目设置为1,但我想知道是否有更好的方法。我不确定LINQ在这里是否特别有用。。。那么:
foreach (var item in list)
{
item.Active = (item == desiredActiveItem ? 1 : 0);
}
我同意Jon的观点,但如果你想使用LINQ,你可以这样做:
list = list.Select(i => { i.Active = (i == desiredActiveItem ? 1 : 0);
return i; }).ToList();
这表明在这里不使用LINQ确实是一个好主意。作为Daniel回答的一对,如果你必须使用LINQ,那只是一种曲解。至少用它来找到物品,然后采取行动
var item = list.FirstOrDefault**(i => i == desired);
if (item != null)
{
item.Active = true;
}
**根据列表的性质,可能会更改为
第一个
、单个
或单个或默认
。是否有一些谓词可用于确定哪个项为1?注意:这不会将所有其他项设置为false!如果您使用不同的所需的值运行此代码两次,您将得到两个活动项。@Daniel您说得对!真的不应该把这当作答案。