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

C# 如何按整数属性对类列表排序?,c#,linq,sorting,C#,Linq,Sorting,下面我创建了一个包含4个Person类型元素的列表。我想根据年龄属性对人员列表进行升序排序。有没有一种优雅的方法可以通过LINQ或IComparable(或其他什么)来实现这一点,这样我就不必从头开始编写自己的算法 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program {

下面我创建了一个包含4个Person类型元素的列表。我想根据年龄属性对人员列表进行升序排序。有没有一种优雅的方法可以通过LINQ或IComparable(或其他什么)来实现这一点,这样我就不必从头开始编写自己的算法

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;
            }
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
列表人员=新列表();
添加(新人物(“Matthew”,27));
人员。添加(新人员(“标记”,19));
添加(新人物(“卢克”,30));
添加(新人物(“约翰”,20));
//如何按年龄对列表排序?
}
私人阶级人士
{
字符串名称{get;set;}
int Age{get;set;}
公众人物(字符串名称,整数年龄)
{
名称=名称;
年龄=年龄;
}
}
}
}
试试这个:

List<Person> SortedList = people.OrderBy(o => o.Age).ToList();
List-SortedList=people.OrderBy(o=>o.Age.ToList();

Linq已经在OrderBy()中提供了完全相同的代码是的,我说得太快了,我本来以为你有一个比较。所以你是对的,它不存在,但int已经实现了IComparable,所以我只使用内置的OrderBy是最“优雅的实现方式”,OrderBy并没有对列表进行排序。您可以将它与
.ToList()
组合以创建一个新的排序列表,但它不会像此解决方案那样对原始列表进行排序。我真的不明白它是如何工作的,但这是唯一可以让列表在整数字段上排序的方法。OrderBy在整数值上对我不起作用。啊,强制性的“让我们否决你不知道用什么确切的关键字来搜索一个重复的问题”…重复的警察钉另一个…:)
people.Sort((p1, p2) =>
{
  return p1.Age - p2.Age;
});