整理具有多个属性的列表

本文关键字:属性 列表 | 更新日期: 2023-09-27 17:58:10

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

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

Car Number
Car Title
and few other properties

现在车号可以是任何双数,也可以是楠(null),车号永远不能为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

谢谢你的帮助。

整理具有多个属性的列表

尝试类似的东西

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); 
    } 
}