如何根据每个类的值订购一个类列表?

时间:2011-12-28 10:20:51

标签: c# list class

我有这堂课:

public class MyClass
{
    public MyClass()
    {

    }

    public int value { get; set; }
}

我在List上添加了3个这个类:

MyClass class1 = new MyClass()
MyClass class2 = new MyClass()
MyClass class3 = new MyClass()

IList<MyClass> classList = new List<MyClass>().ToList();
classList.Add(class1);
classList.Add(class2);
classList.Add(class3);

现在,我想根据MyClass.value值订购此列表(升序)。 我怎么能在C#上做到?

IList不是强制性的,所以如果你知道任何其他的订购策略,这将是好的。

5 个答案:

答案 0 :(得分:4)

将所有项添加到classList后,只需执行此操作。 (这适用于Framework 3.5sp1或更高版本)

classList = classList.OrderBy(cc => cc.value).ToList();

答案 1 :(得分:3)

使用LINQ和OrderBy方法:

var sortedList = classList.OrderBy(i => i.value);

有相应的OrderByDescending

答案 2 :(得分:3)

你会打电话给

classList.Sort()

但在你必须实现像那样的IComparable接口之前

 class MyClass: IComparable
{

    public int value { get; set; }

    #region IComparable Members

    public int CompareTo(object obj)
    {
        MyClass e = (MyClass)obj;
        int r;
        r = this.value.CompareTo(e.value);
        return r;

    }

    #endregion
}

答案 3 :(得分:2)

var orderedList = classList.Orderby(x =>x.Value)

答案 4 :(得分:2)

尝试使用LINQ,例如:

from cl in classList 
orderby cl.value
select cl;