【发布时间】:2011-09-01 22:05:19
【问题描述】:
我正在尝试提出一组链式OrderBy/ThenBy 扩展方法调用,相当于使用orderby 关键字的LINQ 语句。
我使用 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())
我不知道如何使用带有 orderby 关键字的 LINQ 语句来做到这一点,所以我认为使用扩展方法可能会让我走得更远,但由于我无法获得我的扩展方法版本来给我与我的 orderby 关键字版本相同的结果,我暂时回到绘图板。
有什么想法吗?
【问题讨论】:
标签: c# sorting linq-to-objects .net-3.5