C# 更改lambda/LINQ中的所有值

C# 更改lambda/LINQ中的所有值,c#,linq,lambda,C#,Linq,Lambda,我有一本字典,上面有一系列类似这样的对象 class Client { public int Hash { get; set; } public bool Active { get; set; } } var ClientsDict = new Dictionary<string, List<Client>>(); 我如何做与之相反的事情,并将列表中的所有其他项设置为false ClientsDict[userI

我有一本字典,上面有一系列类似这样的对象

class Client
    {
        public int Hash { get; set; }
        public bool Active { get; set; }
    }
    var ClientsDict = new Dictionary<string, List<Client>>();
我如何做与之相反的事情,并将列表中的所有其他项设置为false

 ClientsDict[userId].All().Active = false; //cannot resolve symbol
注意:我想避免一场争吵

编辑:


如果你正在改变一些东西,你不应该把它表达成LINQ转换。只需使用常规的
foreach
循环:

foreach(var client in ClientsDict[userId])
{
    client.Active = false;
}

您也可以使用,但我建议不要使用。

如果您要对某些内容进行变异,则不应将其表示为LINQ转换。只需使用常规的
foreach
循环:

foreach(var client in ClientsDict[userId])
{
    client.Active = false;
}

您也可以使用,但我建议不要使用。

使用
Where
LINQ方法来表示相反的条件,并在结果集上循环:

foreach(var client in ClientsDict[userId].Where(c => c.Hash != hash))
{
    client.Active = false;
}
编辑:用于比较的
ForEach()方法版本:

ClientsDict[userId]
    .Where(c => c.Hash != hash)
    .ToList()
    .ForEach(c => c.Active = false);
我通常不喜欢使用
ForEach()
方法,但我必须承认,它在这里看起来并不太糟糕。也就是说,由于该方法仅在
列表中可用,因此您必须调用
.ToList()


有关使用它是否是一个好主意的更具哲理的讨论,请参见此处:。

使用
Where
LINQ方法来表示相反的条件并循环结果集:

foreach(var client in ClientsDict[userId].Where(c => c.Hash != hash))
{
    client.Active = false;
}
编辑:用于比较的
ForEach()方法版本:

ClientsDict[userId]
    .Where(c => c.Hash != hash)
    .ToList()
    .ForEach(c => c.Active = false);
我通常不喜欢使用
ForEach()
方法,但我必须承认,它在这里看起来并不太糟糕。也就是说,由于该方法仅在
列表中可用,因此您必须调用
.ToList()



关于它的使用是否是一个好主意的更具哲理的讨论,请参见此处:。

您为什么反对它?如果你能回答我问题的第一部分,第二部分我已经回答了,我会接受你的回答answered@LastTribunal你问题的答案在答案的第一句。不要将状态的突变建模为要求值的表达式,显式地使用循环语句来显示状态正在被修改。为什么不建议这样做?如果你能回答我问题的第一部分,第二部分我已经回答了,我会接受你的回答answered@LastTribunal你问题的答案在答案的第一句。不要将状态的突变建模为要求值的表达式,显式使用循环语句来显示正在修改的状态。为什么要避免foreach?语义。批量编辑应该和单个编辑一样简洁。为什么要避免foreach?语义。批量编辑应该和单个编辑一样简洁。是的,看起来不错。我以为你想更新除一个以外的所有客户端。这就是我从中了解到的:我如何做相反的事情,并将列表中的所有其他设置为false?阅读文章,但它很蹩脚:)Foreach看起来更具可读性..哈哈,我会接受你的答案,因为你是最主动的抱歉,兄弟,不得不把它交给原来的人是的,看起来不错。我以为你想更新除一个以外的所有客户端。这就是我从中了解到的:我如何做相反的事情,并将列表中的所有其他设置为false?阅读文章,但它很蹩脚:)Foreach看起来更具可读性..哈哈,我会接受你的答案,因为你是最主动的抱歉,兄弟,不得不把它给原来的家伙