我试图想出一套链接OrderBy
/ThenBy
扩展方法调用,它等效于使用orderby
关键字的LINQ语句。LINQ orderby关键字与OrderBy扩展方法的等效排序
使用orderby
关键字我的LINQ语句如下所示:
List<Summary> sortedSummaries = new List<Summary>(
from summary in unsortedSummaries
orderby summary.FieldA ascending,
summary.FieldB ascending,
summary.FieldC ascending,
summary.FieldD ascending
select summary);
现在,我猜想,等价版本,采用链式OrderBy
/ThenBy
扩展方法的调用是这样的:
List<Summary> sortedSummaries = new List<Summary>(unsortedSummaries);
sortedSummaries.OrderBy(x => x.FieldA).ThenBy(x => x.FieldB).ThenBy(x => x.FieldC).ThenBy(x => x.FieldD);
但是,这使我得到了与使用关键字orderby
的LINQ语句完全不同的结果。
我在这里可能会做错什么?
我想转换为使用链接的原因OrderBy
/ThenBy
扩展方法调用的是,我需要使用自定义比较上FieldD
,就像这样:
.ThenBy(x => x.FieldD, new NaturalSortComparer())
我不能图中如何使用LINQ语句与orderby
关键字,所以我认为使用扩展方法可能会让我更远,但由于我无法让我的扩展方法版本给我与我的orderby
关键字版本相同的结果,我现在回到制图板。
任何想法?
啊,是的,就是这样。现在完美。我以为我是LINQ运营商的会计师,从不改变现有的序列,但我必须混合起来:) – 2011-05-25 16:20:40