Подтвердить что ты не робот

С# Справка: Сортировка списка объектов в С#

Возможные дубликаты:
Сортировка объектов с использованием предопределенного списка отсортированных значений
Справка С#: сортировка списка объектов на С#

Двойной пост

Сортировка списка объектов в С#

public class CarSpecs
{

    public CarSpecs()
    {
    }

    private String _CarName;
    public String CarName
    {
        get { return _CarName; }
        set { _CarName = value; }
    }



    private String _CarMaker;
    public String CarMaker
    {
       get { return _CarMaker;}
       set { _CarMaker = value; }
    }


    private DateTime _CreationDate;
    public DateTime CreationDate
    {
        get { return _CreationDate; }
        set { _CreationDate = value; }
    }
}

Это список, и я пытаюсь выяснить эффективный способ сортировки этого списка List<CarSpecs> CarList, содержащего 6 (или любое целое количество) автомобилей, по дате изготовления автомобиля. Я собирался сделать Bubble, но будет ли это работать? Любая помощь?

Спасибо

4b9b3361

Ответ 1

CarList = CarList.OrderBy( x => x.CreationDate ).ToList();

Ответ 2

Сначала, используя сокращенный синтаксис, введенный в .Net 3.5, вы можете сделать это определение класса намного короче:

public class CarSpecs
{
    public CarSpecs() { }

    public String CarName { get; set;
    public String CarMaker { get; set; }
    public DateTime CreationDate { get; set; }
}

Это будет скомпилировано в тот же класс, что и у вас выше.

Во-вторых, вы можете легко отсортировать их с помощью лямбда-выражений или LINQ:

var linq = (from CarSpecs c in CarList
            orderby c.CreationDate ascending
            select c) as List<CarList>;

var lambda = CarList.OrderBy(c => c.CreationDate).ToList();

Ответ 3

Не записывайте свой собственный алгоритм сортировки. У .NET есть метод Array.Sort() специально для таких вещей, как это.

Поскольку у вас есть пользовательский объект, вам нужно определить, как сравнить 2 объекта, чтобы алгоритм сортировки знал, как их сортировать. Вы можете сделать это 1 из 2 способов:

  • Создайте класс CarSpecs для IComparable
  • Создайте класс, реализующий IComparer и передайте это как параметр Array.Sort() вместе с вашим массивом.

Ответ 4

Уже существуют существующие алгоритмы сортировки в BCL - Array.Sort() и List.Sort(). Внедрите класс IComparer, который определяет порядок сортировки с помощью CreationDate, затем поместите все объекты в массив или список и вызовите соответствующий метод Sort()