How to sort class list by integer property?
本问题已经有最佳答案,请猛点这里访问。
下面我创建了一个包含4个类型为person的元素的列表。我想根据年龄属性按升序对人员列表进行排序。有没有一种优雅的方法可以用LINQ或IComparable(或其他东西)来完成这一点,这样我就不必从头开始编写自己的算法了?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { List<Person> people = new List<Person>(); people.Add(new Person("Matthew", 27)); people.Add(new Person("Mark", 19)); people.Add(new Person("Luke", 30)); people.Add(new Person("John", 20)); // How to sort list by age? } private class Person { string Name { get; set; } int Age { get; set; } public Person(string name, int age) { Name = name; Age = age; } } } } |
1 2 3 4 | people.Sort((p1, p2) => { return p1.Age - p2.Age; }); |
试试这个:
1 | List<Person> SortedList = people.OrderBy(o=>o.Age).ToList(); |