按T的属性</t>之一对List <t>进行排序

时间:2013-05-07 11:11:36

标签: c#

我有List<T>

如何通过T的int属性之一对其进行升序排序?

我知道我可以手动创建自己的方法,但有任何方法可以像List<T>.Sort那样简洁(通过T的int属性); ?

6 个答案:

答案 0 :(得分:6)

您可以使用Enumerable Orderby按其属性进行排序。

List<yourType> yourCollection = YourSourceList.OrderBy(e=>e.YourProperty).ToList();

答案 1 :(得分:5)

是的,您可以使用List<T>.Sort

list.Sort((t1, t2) => t1.IntProperty.CompareTo(t2.IntProperty));

效率较低但更具可读性的方法是使用Enumerable.OrderBy

list = list.OrderBy(t => t.IntProperty).ToList();

答案 2 :(得分:2)

试试这个:

 List<T> lst=List<T>.OrderBy(x => x.Property).ToList();

答案 3 :(得分:1)

您可以编写自己的Comparer课程。然后使用该类进行排序,例如:

myList.Sort(new MyListComparer());

答案 4 :(得分:0)

嘿尝试将此代码添加到您的列表中以排序ASC / DESC

 List<HRDocumentCheckList> ser=new List<HRDocumentCheckList>();
 ser.OrderByDescending(q => q.Document.Id).ToList();

希望它可以帮到你

答案 5 :(得分:0)

对于没有特权使用Lamda表达方法的人,可以按照以下给出的方法接受答案。核心思想是实现IComparable<Person>,检查对象中定义的任何特定属性/字段,此处为“Person”。

public class ConsoleApp
    {
        private static void Main(string[] args)
        {
            List<Person> p = new List<Person>();
            p.Add(new Person() {Age = 25, Name = "Jo"});
            p.Add(new Person() {Age = 10, Name = "Jo"});
            p.Add(new Person() {Age = 2, Name = "Jo"});
            p.Sort();

        }
    }

    public class Person : IComparable<Person>
    {
        public string Name { get; set; }
        public int Age { get; set; }

        public int CompareTo(Person other)
        {
            return other == null ? 1 : Age.CompareTo(other.Age);
        }
    }