Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net LINQ中的互斥属性_.net_Linq - Fatal编程技术网

.net LINQ中的互斥属性

.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,你可以这样做:

我有一个列表,其中有一个“活动”属性,我只想将该属性设置为1以用于某个项目,将其设置为0以用于所有其他项目


在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您说得对!真的不应该把这当作答案。