可能重复:
使用预定义的排序值
列表对对象排序C#Help:在C#中排序对象列表双重帖子
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; }
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个列表,我试图找出一种有效的方法来排序这个列表 List<CarSpecs> CarList,包含汽车生产日期的6(或任何整数)汽车.我打算做冒泡排序,但那会有用吗?任何帮助?
谢谢
Joe*_*orn 42
CarList = CarList.OrderBy( x => x.CreationDate ).ToList();
Run Code Online (Sandbox Code Playgroud)
首先,使用.Net 3.5中引入的简写语法,可以使这个类定义更短:
public class CarSpecs
{
public CarSpecs() { }
public String CarName { get; set;
public String CarMaker { get; set; }
public DateTime CreationDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这将编译成与上面的类完全相同的类.
其次,您可以使用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();
Run Code Online (Sandbox Code Playgroud)
BCL 中已经存在现有的排序算法 - Array.Sort() 和 List.Sort()。实现一个 IComparer 类,该类使用 CreationDate 确定排序顺序,然后将所有对象放入数组或列表中并调用适当的 Sort() 方法