考虑此示例代码
System.Collections.ArrayList fruits = new System.Collections.ArrayList();
fruits.Add("mango");
fruits.Add("apple");
fruits.Add("lemon");
IEnumerable<string> query = fruits.Cast<string>()
.OrderBy(fruit => fruit)
.Where(fruit => fruit.StartsWith("m"))
.Select(fruit => fruit);
我有两个问题:
Select
单独返回相同类型,是否需要编写最后一个Where
子句?这个例子来自msdn,为什么他们总是写呢?Select
和Where
,或OrderBy
?答案 0 :(得分:8)
不,如果您实际上没有转换返回的类型,则Select
不是必需的。
在这种情况下,方法调用的顺序可能会影响性能。在过滤之前对所有对象进行排序肯定需要比过滤更长的时间,然后然后对较小的数据集进行排序。
答案 1 :(得分:4)
在这种情况下,.Select是不必要的,因为.Cast已经保证你正在使用IEnumerable&lt; string&gt;。
.OrderBy和.Where的排序不会影响查询的结果,但一般情况下如果你使用。那么首先你会获得更好的性能,因为要排序的元素会更少。