【发布时间】:2011-11-15 20:47:55
【问题描述】:
今天我遇到了一个由于拼写错误而弹出的 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()
如果 select 和 where 都返回 IEnumerable<T> 那么为什么会模棱两可?谢谢。
【问题讨论】:
-
感谢大家对 linq 101 的更新。
-
这是那些有趣的命名问题之一,c# 试图在语法上像 sql(哪个 sql 建议您选择列),但是名称
Select,尤其是如果您放入谓词,可以像您一样阅读以仅选择通过的项目,实际上在 ruby 和 smalltalk 中,这就是select方法所做的。
标签: c# vb.net linq c#-4.0 lambda