使用多个属性对列表进行排序

时间:2013-02-06 10:26:59

标签: c# list visual-studio-2008 sorting .net-2.0

我对在C#中整理列表非常困惑,我已经通过不同的教程进行排序,例如使用列表排序(排序方法)或使用IComparable但实际上没有任何东西可以帮助我实现我想要的东西。

例如我有一个汽车列表,

Car Number

Car Title

and few other properties

现在车号可以是任意双号,也可以是Nan(null),Car Title永远不能为空。

我希望以一种方式对列表进行排序,首先按车号排序,如果它们不适用于汽车,则使用其标题对其余车辆进行排序。

所以如果我有这样的话,

Car 1      100.0 (car number)                  BMW x6 (car name)
Car 2      (there isn't any car number)        Mercedies A class (car name)
Car 3      99.0                                Alpha Romeo
Car 4      1.2                                 Jeep
Car 5      4.1                                 Victoria Marshall 1933
Car 6      no number                           Vauxhal

Out put我希望我的列表类被排序为

Car 4, Car 5, Car 3, Car 1, Car 2, Car 6

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

尝试类似

的内容
var lst = new List<Cars>()

//add cars to list

lst = lst.Orderby(c => c.CarNumber).ToList();

你可以像这样扩展它:

lst = lst.Orderby(c => c.CarNumber).ThenBy(c=> c.Title).ToList();

或者

您实施IComparable,以便按您希望的方式进行排序:

public class Car : IComparable<Car> 
{ 
    public string Number { get; set; } 

    public int CompareTo(Car obj) 
    { 
        return obj.Number.CompareTo(Number); 
    } 
}