Как я могу управлять несколькими критериями OrderByDescending?
Я хочу получить список, который упорядочивает по трем свойствам, которые по приоритету
Мой код здесь
MyList
.OrderByDescending(p => p.ToDate)
.OrderByDescending(p => p.Number)
.OrderByDescending(p => p.RunDate)
.FirstOrDefault();
Но результат неверен.
Например, если MyList
содержит два элемента: e1, e2 и e1.ToDate > e2.ToDate, результат: e2.
Какое свойство должно быть первым? Свойство с наивысшим приоритетом (ToDate) или самым низким (RunDate)?
Ответы
Ответ 1
Я подозреваю, что вы действительно хотите:
MyList
.OrderByDescending(p => p.ToDate)
.ThenByDescending(p => p.Number)
.ThenByDescending(p => p.RunDate)
.FirstOrDefault();
ThenBy
и ThenByDescending
используются для указания вторичных порядков после того, как вы предоставили первичный код с помощью OrderBy
или OrderByDescending
.