假设我做了类似以下的事情:
如果它确实进行某种优化,并且在该过程中未返回中间列表,那么它是如何知道如何执行该操作的?如何编写一个类使其自己优化方法链?这没有意义。
var Ordered = MyList.OrderBy(x => x.prop1).ThenBy(x => x.prop2);
MyList.OrderBy(x => x.prop1).ThenBy(x => x.prop2)
返回一个排序后的列表,并按照prop1
排序,然后按照prop2
进一步筛选该列表。换句话说,它等同于:
var OrderedByProp1 = MyList.OrderBy(x => x.prop1);
var Ordered = OrderedByProp1.OrderBy(x => x.prop2);
显然,可以通过运行带有比较器的排序算法来优化此过程:
var Ordered = MyList.Sort( (x,y) => x.prop1 != y.prop1 ? x.prop1 < y.prop1 : ( x.prop2 < y.prop2 ) );
如果它确实进行某种优化,并且在该过程中未返回中间列表,那么它是如何知道如何执行该操作的?如何编写一个类使其自己优化方法链?这没有意义。