如何按整数属性对类列表进行排序? [复制]

Posted

技术标签:

【中文标题】如何按整数属性对类列表进行排序? [复制]【英文标题】:How to sort class list by integer property? [duplicate] 【发布时间】:2015-08-24 21:03:27 【问题描述】:

下面我创建了一个包含 4 个 Person 类型元素的列表。我想根据 Age 属性按升序对 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;
            
        
    

【问题讨论】:

啊,必须的,“让我们对你投反对票,因为你不知道用什么确切的关键字来搜索以找到重复的问题”... 重复警察又钉了一个... :) 【参考方案1】:

试试这个:

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

【讨论】:

【参考方案2】:
people.Sort((p1, p2) =>

  return p1.Age - p2.Age;
);

【讨论】:

Linq 已经在 OrderBy() 中带有完全相同的代码 Are you sure? 是的,我说得太早了,我一开始还以为你有一个比较。所以你是对的,它不存在,但是 int 已经实现了 IComparable ,所以 IMO 只使用内置的 OrderBy 是最“优雅的方式来完成这个” OrderBy 不会对列表进行就地排序。您可以将它与.ToList() 结合起来创建一个新的排序列表,但它不会对原始列表进行排序,就像这个解决方案一样。 我不太明白它是如何工作的,但这是我可以获得一个列表以在整数字段上排序的唯一方法。 .OrderBy 不适用于整数值。

以上是关于如何按整数属性对类列表进行排序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何按 .NET 2.0 中的特定属性对列表进行排序? [复制]

Python - 如何按每个列表中的第四个元素对列表列表进行排序? [复制]

按属性名称(字符串值)排序列表? [复制]

Python:根据属性对对象列表进行排序

如何在 Dart 中对列表进行排序? [复制]

如何按每个对象的成员对对象列表进行排序? [复制]