首页 > 解决方案 > C# linq ANY 布尔否定外部与谓词

问题描述

有一个对象具有对象的属性 ListA,每个对象内部都有一个属性 id(nullable)

ListA 中总是有两个对象

案例A

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

对比

案例B

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

我想了解为什么当 id 为 True/False 或 False/True时,如果仅在 id 为 False/False 时输入,则案例 A不符合进入内部的语句标准。

标签: linq

解决方案


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

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

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

我们将Any更改为All并进入此块,此时至少有 1 个项目没有价值。


推荐阅读