如何按特定成员对对象列表进行排序?

Abe*_*ler 7 .net c# sorting list

假设我有一个Person对象列表:

class person
{
  int id;
  string FirstName;
  string LastName;
}
Run Code Online (Sandbox Code Playgroud)

我如何按LastName成员对此列表进行排序?

List<Person> myPeople = GetMyPeople();
myPeople.Sort(/* what goes here? */);
Run Code Online (Sandbox Code Playgroud)

Dan*_*Tao 16

List<T>.Sort将就地排序列表.如果那就是你想要的,那就甜蜜了:使用Comparison<T>代表的重载:

List<Person> myPeople = GetMyPeople();
myPeople.Sort((x, y) => x.LastName.CompareTo(y.LastName));
Run Code Online (Sandbox Code Playgroud)

如果您不想修改实际列表但希望按排序顺序枚举其内容,那么,正如其他人所建议的那样,请使用LINQ扩展方法OrderBy(.NET 3.5及更高版本).这个方法可以采用一个简单的Func<T, TKey>选择器,并通过这个选择器......你知道,选择的键来排序.

List<Person> myPeople = GetMyPeople();
var orderedByLastName = myPeople.OrderBy(p => p.LastName);
Run Code Online (Sandbox Code Playgroud)


tan*_*ius 14

在C#3.0下,您可以使用以下linq语句:

var sortedEnumerable = myPeople.OrderBy( p => p.LastName );
Run Code Online (Sandbox Code Playgroud)