C# 排序具有多个属性的列表

C# 排序具有多个属性的列表,c#,list,visual-studio-2008,sorting,.net-2.0,C#,List,Visual Studio 2008,Sorting,.net 2.0,我对C#中的列表排序感到非常困惑,我已经学习了不同的排序教程,例如使用列表(排序方法)或使用IComparable进行排序,但实际上没有任何帮助 例如,我有一个汽车清单 Car Number Car Title and few other properties 现在车号可以是任意的双倍数字,也可以是Nan(空),车号永远不能为空 我想对列表进行排序,首先按照汽车编号进行排序,如果一辆汽车没有这些编号,则使用其标题对其余的汽车进行排序 如果我有这样的东西 Car 1 100.0 (

我对C#中的列表排序感到非常困惑,我已经学习了不同的排序教程,例如使用列表(排序方法)或使用IComparable进行排序,但实际上没有任何帮助

例如,我有一个汽车清单

Car Number

Car Title

and few other properties
现在车号可以是任意的双倍数字,也可以是Nan(空),车号永远不能为空

我想对列表进行排序,首先按照汽车编号进行排序,如果一辆汽车没有这些编号,则使用其标题对其余的汽车进行排序

如果我有这样的东西

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
谢谢你的帮助。

试试类似的方法

var lst = new List<Cars>()

//add cars to list

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

您实现了IComparable,因此它将按照您想要的方式进行排序:

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

    public int CompareTo(Car obj) 
    { 
        return obj.Number.CompareTo(Number); 
    } 
}
公车:i可比
{ 
公共字符串编号{get;set;}
公共内部比较(汽车obj)
{ 
返回对象编号。比较(编号);
} 
}

我创建了一个带有属性的类,但不确定之后该做什么来排序,如果我使用IComparable,它将只排序汽车编号,而不是其他编号-1投票似乎有点苛刻,LINQ从C#3.0开始就可用,但您在标记中提到了.net 3.5。您可以在汽车类上实现IComparable,然后是
排序()
列表上的方法应该可以工作是的,但它只按汽车编号而不是字母顺序排序,这取决于您的实现af I可比较:
公共类汽车:I可比较{公共字符串编号{get;set;}公共int CompareTo(汽车对象){返回obj.number.CompareTo(编号);}}
啊,我明白了,这就是我想要的,如果你能把它添加到你的答案中,我会接受它:)
public class Car : IComparable<Car> 
{ 
    public string Number { get; set; } 

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