关于C#:如何按整数属性对类列表排序?

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();