gpt4 book ai didi

c# - linq在何处和选择上的歧义

转载 作者:太空狗 更新时间:2023-10-29 18:08:41 26 4
gpt4 key购买 nike

今天我遇到了一个 LINQ to objects(不是 SQL)的问题,由于打字错误而弹出。我有一个 .Select一个地方和一个.Where在另一个地方。我期待相同的结果,但他们显示不同的数字。假设 somelist有 10 个元素,所有元素都有 qty = 0

//returns 10 - basically count of all rows. I am expecting 0
somelist.Select(p => p.qty > 0).Count()

//returns 0 - the correct count
somelist.Where(p => p.qty > 0).Count()

如果同时选择和 where 返回 IEnumerable<T>那为什么会模棱两可呢?谢谢。

最佳答案

Select 是一个投影,所以你得到的是表达式 p.qty > 0somelist 中的每个元素进行评估.即很多真/假值(与原始列表相同的数字)。所以当你做 Count在上面,你得到相同的数字。如果您查看选择将返回 IEnumerable<bool> (因为 p.qty > 0 的类型是 bool)。

Where 过滤结果,以便计数在过滤后的列表上运行,并为您提供预期的结果。它的类型是 IEnumerable<TypeOfElementInOriginalList> .

注意你也可以这样做:somelist.Count(p => p.qty > 0)因为 Count 有一个 overload接受要过滤的谓词。

关于c# - linq在何处和选择上的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8142931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com