LINQ OrderBy больше чем с одним полем

У меня есть список, в котором я нуждаюсь отсортированный по двум полям. Я попытался использовать OrderBy в LINQ, но который только позволяет мне указывать одно поле. Я ищу список, который будет отсортирован по первому полю и затем если существуют какие-либо дубликаты в первом поле к виду вторым полем.

Например, я хочу, чтобы результаты были похожи на это (отсортированный по фамилии затем имя).

  • Adams, John
  • Smith, James
  • Smith, Peter
  • Thompson, Fred

Я видел, что можно использовать SQL как синтаксис для выполнения этого, но я ищу способ сделать это с методом OrderBy.

IList listOfPeople = /*The list is filled somehow.*/
IEnumerable sortedListOfPeople = listOfPeople.OrderBy(aPerson => aPerson.LastName, aPerson.FirstName); //This doesn't work.

76
задан Community 23 May 2017 в 12:34
поделиться

4 ответа

Вам необходимо использовать ThenBy :

listOfPeople.OrderBy(person => person.LastName)
            .ThenBy(person => person.FirstName)
156
ответ дан 24 November 2019 в 11:12
поделиться

Ваши последующие поля должны быть упорядочены с помощью метода ThenBy()

2
ответ дан 24 November 2019 в 11:12
поделиться

Используйте .ThenBy (aPerson => field2);

1
ответ дан 24 November 2019 в 11:12
поделиться
var sortedListOfPeople = listOfPeople.OrderBy(aPerson => aPerson.LastName).ThenBy(a => aPerson.FirstName);
1
ответ дан 24 November 2019 в 11:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: