可能重复:
Sort objects using predefined list of sorted values
C# Help: Sorting a List of Objects in C#Double Post
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个(或任何整数)汽车,按汽车生产日期。我打算做冒泡排序,但那会有用吗?任何帮助?
由于
答案 0 :(得分:42)
CarList = CarList.OrderBy( x => x.CreationDate ).ToList();
答案 1 :(得分:5)
首先,使用.Net 3.5中引入的简写语法,可以使这个类定义更短:
public class CarSpecs
{
public CarSpecs() { }
public String CarName { get; set;
public String CarMaker { get; set; }
public DateTime CreationDate { get; set; }
}
这将编译成与上面完全相同的类。
其次,您可以使用Lambda表达式或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();
答案 2 :(得分:4)
不要编写自己的排序算法。 .NET有一个Array.Sort()
方法专门用于这样的事情。
由于您有自定义对象,因此需要定义如何比较2个对象,以便排序算法知道如何对它们进行排序。您可以通过以下两种方式之一完成此操作:
CarSpecs
课程实施IComparable
界面IComparer
的类,并将其作为参数传递给Array.Sort()
以及您的数组。答案 3 :(得分:0)
BCL中已存在排序算法 - Array.Sort()和List.Sort()。实现一个IComparer类,使用CreationDate确定排序顺序,然后将所有对象放入数组或列表中,并调用相应的Sort()方法