Сортировка списка C # по элементу - PullRequest
3 голосов
/ 08 марта 2011

У меня есть класс 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;
    }
}

И у меня есть C # Список ClassInfo () следующим образом

List<ClassInfo> ClassInfoList;

Как мне отсортировать ClassInfoList на основе BlocksCovered?

Ответы [ 4 ]

6 голосов
/ 08 марта 2011
myList.Sort((x,y) => x.BlocksCovered.CompareTo(y.BlocksCovered)
6 голосов
/ 08 марта 2011

Возвращает List<ClassInfo>, упорядоченное по BlocksCovered:

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

Обратите внимание, что вы действительно должны сделать BlocksCovered свойством, сейчас у вас есть открытые поля.

1 голос
/ 08 марта 2011

Если у вас есть ссылка на объект List<T>, используйте метод Sort(), предоставленный List<T>, следующим образом.

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

Если вы используете метод расширения OrderBy() Linq, вашlist будет рассматриваться как перечислитель, то есть он будет избыточно преобразован в List<T>, отсортирован и затем возвращен как перечислитель, который необходимо снова преобразовать в List<T>.

0 голосов
/ 08 марта 2011

Я бы использовал Linq, например:

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