排序自定义对象列表

Rhs*_*Rhs 5 c#

我有一个名为Person的类,它包含一个属性LastName,它反映了一个与Person的姓氏相对应的字符串.

我创建了一个List如下:

var People = List<Person>
Run Code Online (Sandbox Code Playgroud)

我想要做的是按字母顺序按人员的LastName属性排序.

看了一些例子,我试过了

People = People.OrderBy(p => p.LastName);
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

Ree*_*sey 13

使用LINQ,您需要将结果转换回List<Person>:

People = People.OrderBy(p => p.LastName).ToList();
Run Code Online (Sandbox Code Playgroud)

由于OrderBy返回a IOrderedEnumerable<T>,您需要额外的调用ToList()才能将其重新转换为列表.

但是,由于您实际上想要就地排序,您也可以List<T>.Sort直接使用:

People.Sort((p1, p2) => p1.LastName.CompareTo(p2.LastName));
Run Code Online (Sandbox Code Playgroud)