根据元素对C#List进行排序

时间:2011-03-07 22:47:22

标签: c# sorting element

我有C#类如下:

public class ClassInfo {
    public string ClassName;
    public int BlocksCovered;
    public int BlocksNotCovered;


    public ClassInfo() {}

    public ClassInfo(string ClassName, int BlocksCovered, int BlocksNotCovered) 
    {
        this.ClassName = ClassName;
        this.BlocksCovered = BlocksCovered;
        this.BlocksNotCovered = BlocksNotCovered;
    }
}

我有ClassInfo()的C#List如下

List<ClassInfo> ClassInfoList;

如何根据BlocksCovered对ClassInfoList进行排序?

4 个答案:

答案 0 :(得分:6)

这会返回由List<ClassInfo>订购的BlocksCovered

var results = ClassInfoList.OrderBy( x=>x.BlocksCovered).ToList();

请注意,您应该真正使BlocksCovered成为属性,现在您拥有公共字段。

答案 1 :(得分:6)

myList.Sort((x,y) => x.BlocksCovered.CompareTo(y.BlocksCovered)

答案 2 :(得分:1)

如果您引用List<T>对象,请使用Sort()提供的List<T>方法,如下所示。

ClassInfoList.Sort((x, y) => x.BlocksCovered.CompareTo(y.BlocksCovered));

如果您使用OrderBy() Linq扩展方法,您的列表将被视为枚举器,这意味着它将被冗余转换为List<T>,已排序,然后作为需要转换的枚举器返回再次List<T>

答案 3 :(得分:0)

我会使用Linq,例如:

ClassInfoList.OrderBy(c => c.ClassName);