我試圖想出一套鏈接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