LINQ:如果没有元素,All() 返回什么

本文关键字:返回 什么 All 如果没有 元素 LINQ | 更新日期: 2023-09-27 18:33:48

这是一个

非常简单的问题,但"全部"对谷歌来说是一个糟糕的关键字,哈哈。

我想获取所有类别,其中没有任何产品更新,或者没有任何产品。

换句话说,获取所有尚未更新其所有产品的类别,包括尚未包含任何产品的所有类别。

这是正确的表达方式吗?

var categs = context.Categories.Where(c => c.Products.All(x => !x.Updated));

LINQ:如果没有元素,All() 返回什么

它返回true .来自文档(强调我的):

返回值
如果源序列的每个元素都通过指定谓词中的测试,或者序列为空,则为 true;否则,为假。

(这也是合乎逻辑的结论。序列中的所有元素确实都传递了谓词,就像我所有的女儿都超过 10 英尺高一样。我没有女儿的事实并不能改变这句话的真实性:)

请参阅我在 AnyAll 上的 Edulinq 博客文章,了解有关它们如何工作的更多详细信息。

all "确定序列的所有元素是否都满足条件。

MSDN

我认为你的表达是正确的。您将获得包含未更新产品的所有类别。