订购对象的列表

时间:2010-02-16 09:24:37

标签: c# asp.net

我有一个对象列表,其中对象有2个属性:idname。我必须按对象的名称订购列表

我该怎么做?

4 个答案:

答案 0 :(得分:4)

您是否尝试过使用linq?

using System.Collections.Generic;
using System.Linq;

namespace Demo
{ 
    public class Test
    {
        public void SortTest()
        {
            var myList = new List<Item> { new Item { Name = "Test", Id = 1 }, new Item { Name = "Other", Id = 1 } };
            var result = myList.OrderBy(x => x.Name);
        }
    }

    public class Item
    {
        public string Name { get; set; }
        public int Id { get; set; }
    }
}

答案 1 :(得分:1)

当有内置方法执行此操作时,Linq对此有点过分了。

如果您指的是数组,只需使用Array.Sort

Array.Sort(items, (x, y) => x.Name.CompareTo(y.Name));

如果您的意思是List<T>,请在那里使用Sort功能:

items.Sort((x, y) => x.Name.CompareTo(y.Name));

答案 2 :(得分:1)

如果您正在处理这些对象的List,最简单的方法是为Sort方法提供比较:

var list = new List<MyObject>();
...
list.Sort((item1, item2) => item1.Name.CompareTo(item2.Name));

(上面的示例不对名称进行空值检查)

这很简单,因为字符串实现了IComparable<string>。另一种方法是让您在课堂上实施IComparable<MyObject>,然后拨打list.Sort()

答案 3 :(得分:0)

Sort类的List<T>方法有一个重载,需要进行自定义比较:

list.Sort((x,y) => x.Name.CompareTo(y.Name));