按三个字段</type>对IEnumerable <type>进行排序

时间:2010-12-13 19:26:59

标签: c# sorting ienumerable

我已经定义了如下类型:

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

我有IEnumerable<myType>

我想使用.OrderBy()扩展来对myType列表进行排序,如下所示。

对象应按姓氏排序。如果姓氏相同,则应按名字顺序排列。如果名字相同,则应按中间名排列。

我该怎么做?

2 个答案:

答案 0 :(得分:17)

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;

答案 1 :(得分:7)

myList.OrderBy(t => t.lastName).ThenBy(t => t.firstName).ThenBy(t => t.middleName)

此外,每个OrderByThenBy都有Descending版本,因此OrderByDescendingThenByDescending