对于任意的对象集合,下列两个LINQ表达式是否总是给出相同的结果(假定LINQ提供程序是相同的):
-
var result = list.OrderBy(x => x.FirstName).Where(x => x.Age > 18);
-
var result = list.Where(x => x.Age > 18).OrderBy(x => x.FirstName);
Enumerable<T>.OrderBy()
被指定为稳定排序,而Queryable<T>.OrderBy()
不是。
换句话说,不,因为不能保证排序是稳定的,所以不能保证两个查询对所有提供者给出相同的结果。至少,结果可以按不同的顺序排列。