C#linq任何布尔否定外部vs谓词

问题描述 投票:0回答:1

[具有一个对象,该对象具有对象的属性ListA,并且在每个对象内部都有一个属性id(nullable)

ListA中总是有两个对象

案例A

if (!mainObj.ListA.Any(object => object.id.HasValue)) 
{
   //do
}

vs

情况B

if (mainObj.ListA.Any(object => !object.id.HasValue) ) 
{
   //do
}

我想了解为什么当id为True / False或False / True时Case A不满足仅当id为False / False时才输入内部语句的条件。

linq
1个回答
0
投票

您在案例A中的条件之前使用(!mainObj.ListA.Any(object => object.id.HasValue)),仅当两个对象都没有值时,它才会返回true,因为使用了Any。

对于案例A,您需要使用以下方法:

if (!mainObj.ListA.All(object => object.id.HasValue)) 
{
   //do
}

我们将Any更改为All的地方,当其中至少一项没有价值时,我们进入了这个区块。”>

© www.soinside.com 2019 - 2024. All rights reserved.