Сортировка IEnumerable <type>по трем полям - PullRequest
6 голосов
/ 13 декабря 2010

Я определил тип следующим образом:

public class myType
{
    public string firstName { get; set; }
    public string middleName { get; set; }
    public string lastName { get; set; }
}

У меня есть IEnumerable<myType>.

Я хочу использовать расширение .OrderBy() для сортировки моего списка myType следующим образом.

Объекты должны быть в порядке по фамилии. Если фамилии совпадают, они должны быть в порядке по имени. Если первые имена совпадают, они должны быть в порядке по отчеству.

Как мне это сделать?

Ответы [ 2 ]

17 голосов
/ 13 декабря 2010
var qry = items.OrderBy(x => x.lastName).ThenBy(x => x.firstName)
    .ThenBy(x => x.middleName);

или в синтаксисе LINQ:

var qry = from x in items
          orderby x.lastName, x.firstName, x.middleName
          select x;
7 голосов
/ 13 декабря 2010
myList.OrderBy(t => t.lastName).ThenBy(t => t.firstName).ThenBy(t => t.middleName)

Кроме того, каждый OrderBy и ThenBy имеют версию Descending, поэтому OrderByDescending и ThenByDescending

...