我有一个名为 Person 的类,它包含一个属性 LastName,它反映了与 Person 的姓氏相对应的字符串。
我创建了一个列表,如下所示:
var People = List<Person>
我想做的是按字母顺序按他们的姓氏属性对人们进行排序。
看了一些例子后,我试过了
People = People.OrderBy(p => p.LastName);
但它不起作用。
我有一个名为 Person 的类,它包含一个属性 LastName,它反映了与 Person 的姓氏相对应的字符串。
我创建了一个列表,如下所示:
var People = List<Person>
我想做的是按字母顺序按他们的姓氏属性对人们进行排序。
看了一些例子后,我试过了
People = People.OrderBy(p => p.LastName);
但它不起作用。
使用 LINQ,您需要将结果转换回List<Person>
:
People = People.OrderBy(p => p.LastName).ToList();
由于OrderBy
返回一个IOrderedEnumerable<T>
,您需要额外的调用ToList()
才能将其转回列表。
但是,由于您实际上需要就地排序,因此您也可以List<T>.Sort
直接使用:
People.Sort((p1, p2) => p1.LastName.CompareTo(p2.LastName));
最简单的是使用ToList():
People = People.OrderBy(p => p.LastName).ToList();
您需要ToList
创建一个新的订单 List<Person>
对原始列表进行排序的另一个选项是使用List.Sort
:
People.Sort((p1,p2) => p1.LastName.CompareTo(p2.LastName));
您需要将 orderby 的结果转换为.Tolist()
如下所示
var people = People.OrderBy(p => p.LastName).ToList();