Я пытаюсь найти набор связанных вызовов метода расширения OrderBy
/ ThenBy
, эквивалентных оператору LINQ с использованием ключевого слова orderby
.
Мой оператор LINQ с использованием ключевого слова orderby
выглядит следующим образом:
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);
Однако это дает мне совсем другие результаты, чем использование моего оператора LINQ с ключевым словом orderby
.
Что я могу здесь делать не так?
Причина, по которой я пытаюсь использовать цепочечные вызовы расширения OrderBy
/ ThenBy
, заключается в том, что мне нужно использовать собственный компаратор на FieldD
, например:
.ThenBy(x => x.FieldD, new NaturalSortComparer())
Я не могу понять, как это сделать, используя операторы LINQ с ключевым словом orderby
, поэтому я подумал, что использование методов расширения может продвинуть меня дальше, но так как я не могу получить версию своего метода расширения, чтобы дать мне те же результаты, что и у моей версии ключевого слова orderby
, на данный момент я вернулся к чертежной доске.
Есть идеи?