#linq #sql-order-by
#linq #sql-порядок по
Вопрос:
Я использую «Linq» для фильтрации списка объектов и их сортировки, например
myList.Where(x => x.Item!= "SF" amp;amp; x.AdSize == minadSize)
.OrderBy(x => x.ManufacturingDate)
.OrderBy(x=>x.ExpiryDate);
Я сомневаюсь, правильно ли я это делаю или нет, то есть, если я хочу «сортировать» по нескольким полям, то нужно ли использовать несколько предложений Order By, нельзя ли это сделать с помощью одного «OrderBy»
Ответ №1:
Не используйте несколько OrderBy
вызовов — используйте OrderBy
с последующим ThenBy
:
var query = myList.Where(x => x.Item!= "SF" amp;amp; x.AdSize == minadSize)
.OrderBy(x => x.ManufacturingDate)
.ThenBy(x => x.ExpiryDate); // Could add more ThenBy calls
Если вы используете OrderBy
дважды, это изменит порядок в уже упорядоченном по дате списке по дате истечения срока действия, тогда как я предполагаю, что вы хотите заказывать по дате истечения срока действия только для товаров с одинаковой датой изготовления, что и делается выше.
Очевидно, что также существует ThenByDescending
метод. Например:
var query = people.OrderBy(x => x.LastName)
.ThenBy(x => x.FirstName)
.ThenByDescending(x => x.Age)
.ThenBy(x => x.SocialSecurity);
Комментарии:
1. Спасибо @Jon, мне было интересно, что должно быть что-то для этого сценария