1

我对在 C# 中排序列表感到很困惑,我已经阅读了不同的排序教程,例如使用列表(排序方法)或使用 IComparable 进行排序,但实际上没有什么能帮助我实现我想要的。

例如,我有一个汽车清单,

Car Number

Car Title

and few other properties

现在 Car number 可以是任何双数,也可以是 Nan(null),并且 Car Title 永远不能为 null。

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

所以如果我有这样的事情,

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

输出我希望我的列表类被排序为

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

感谢帮助。

4

1 回答 1

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); 
    } 
}
于 2013-02-06T10:30:14.150 回答