LInq Order By и Order By Desc - PullRequest
       2

LInq Order By и Order By Desc

6 голосов
/ 10 июня 2011

Я использую "Linq", чтобы отфильтровать список объектов и отсортировать их, как

myList.Where(x => x.Item!= "SF" && x.AdSize == minadSize)
      .OrderBy(x => x.ManufacturingDate)
      .OrderBy(x=>x.ExpiryDate);

Я сомневаюсь, правильно ли я это делаю или нет, если я хочу «сортировать» по нескольким полям, тогда необходимо ли использовать несколько предложений Order By, нельзя ли это сделать с помощью одного «OrderBy»

1 Ответ

14 голосов
/ 10 июня 2011

Не используйте несколько вызовов OrderBy - используйте OrderBy, а затем ThenBy:

var query = myList.Where(x => x.Item!= "SF" && 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);
...