Ответ 1
CarList = CarList.OrderBy( x => x.CreationDate ).ToList();
Возможные дубликаты:
Сортировка объектов с использованием предопределенного списка отсортированных значений
Справка С#: сортировка списка объектов на С#Двойной пост
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, но будет ли это работать? Любая помощь?
Спасибо
CarList = CarList.OrderBy( x => x.CreationDate ).ToList();
Сначала, используя сокращенный синтаксис, введенный в .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();
Не записывайте свой собственный алгоритм сортировки. У .NET есть метод Array.Sort()
специально для таких вещей, как это.
Поскольку у вас есть пользовательский объект, вам нужно определить, как сравнить 2 объекта, чтобы алгоритм сортировки знал, как их сортировать. Вы можете сделать это 1 из 2 способов:
CarSpecs
для IComparable
IComparer
и передайте это как параметр Array.Sort()
вместе с вашим массивом.Уже существуют существующие алгоритмы сортировки в BCL - Array.Sort() и List.Sort(). Внедрите класс IComparer, который определяет порядок сортировки с помощью CreationDate, затем поместите все объекты в массив или список и вызовите соответствующий метод Sort()