对于任意对象集合,遵循两个 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()
但不是。
换句话说,不,因为不能保证排序是稳定的,所以不能保证这两个查询对所有提供者都给出相同的结果。至少,结果可能以不同的顺序排列。