关于c#:排序自定义对象列表


Sorting a List of Custom Objects

我有一个名为person的类,它包含一个属性last name,它反映了与该人的姓氏对应的字符串。

我创建了如下列表:

1
var People = List<Person>

我要做的是按姓氏属性按字母顺序对人员进行排序。

在看了一些例子之后,我试过

1
People = People.OrderBy(p => p.LastName);

但它不起作用。


使用linq,您需要将结果转换回List

1
People = People.OrderBy(p => p.LastName).ToList();

由于OrderBy返回IOrderedEnumerable,您需要额外的调用ToList()将其变回列表。

但是,由于您实际上需要就地排序,因此也可以直接使用List.Sort

1
People.Sort((p1, p2) => p1.LastName.CompareTo(p2.LastName));


最简单的是使用ToList():

1
People = People.OrderBy(p => p.LastName).ToList();

您需要ToList创建新的订购List

对原始列表进行排序的另一个选项是使用List.Sort

1
People.Sort((p1,p2) => p1.LastName.CompareTo(p2.LastName));


您需要将orderby的结果转换为.Tolist(),如下所示

1
var people = People.OrderBy(p => p.LastName).ToList();