2
在Linq中,扩展方法如Where
返回IEnumerable
集合,但排序方法如OrderBy
返回IOrderedEnumerable
集合。Linq在IOrderedEnumerable方法之后如何使用IEnumerable方法?
所以,如果你有与OrderBy
结束(即返回IOrderedEnumerable
)查询,你以后不能追加Where
方法 - 编译器抱怨被传递到Where
类型。
var query = Process.GetProcesses()
.Where(p => p.ProcessName.Length < 10)
.OrderBy(p => p.Id);
query = query.Where(p => p.ProcessName.Length < 5);
但是,如果你在一个查询中做到了这一切,那很好!
var query = Process.GetProcesses()
.Where(p => p.ProcessName.Length < 10)
.OrderBy(p => p.Id)
.Where(p => p.ProcessName.Length < 5);
我看着在反射大会,看是否编译器重新排序任何操作,但它似乎并不具备。这个怎么用?
是的,但正是这两个例子之间的区别?为什么第二个工作,但第一个不工作? – 2009-10-13 09:34:43
第二个不试图将'IEnumerable'表达式分配到类型为'IOrderedEnumerable '的变量中。 –
2009-10-13 09:35:57