C#Help:在C#中对对象列表进行排序

时间:2009-05-29 11:30:54

标签: c# sorting class

  

可能重复:
  Sort objects using predefined list of sorted values
  C# Help: Sorting a List of Objects in C#

     

Double Post

     

Sorting a List of objects in 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; }
    }
}

这是一个列表,我试图找出一种有效的方法来排序此列表List<CarSpecs> CarList,包含6个(或任何整数)汽车,按汽车生产日期。我打算做冒泡排序,但那会有用吗?任何帮助?

由于

4 个答案:

答案 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个对象,以便排序算法知道如何对它们进行排序。您可以通过以下两种方式之一完成此操作:

  1. 让您的CarSpecs课程实施IComparable界面
  2. 创建一个实现IComparer的类,并将其作为参数传递给Array.Sort()以及您的数组。

答案 3 :(得分:0)

BCL中已存在排序算法 - Array.Sort()和List.Sort()。实现一个IComparer类,使用CreationDate确定排序顺序,然后将所有对象放入数组或列表中,并调用相应的Sort()方法