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

时间:2012-05-10 07:12:13

标签: c# .net linq entity-framework

这是一个非常简单的问题,但“全部”对谷歌来说是一个糟糕的关键词。

我希望获得所有类别,其中没有任何产品更新,或者没有任何产品。

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

这是正确的表达吗?

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

2 个答案:

答案 0 :(得分:16)

返回true。来自documentation(强调我的):

  

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

(这也是合乎逻辑的结论。序列中所有元素确实传递了谓词,就像我女儿的所有超过10的那样我没有任何女儿的事实并没有改变声明的真实性:)

有关其工作原理的详细信息,请参阅我的Edulinq blog post on Any and All

答案 1 :(得分:4)

全部“确定序列的所有元素是否满足条件。”

MSDN

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