LInq по порядку и упорядочение по описанию

#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, мне было интересно, что должно быть что-то для этого сценария