C# 排序具有多个属性的列表
我对C#中的列表排序感到非常困惑,我已经学习了不同的排序教程,例如使用列表(排序方法)或使用IComparable进行排序,但实际上没有任何帮助 例如,我有一个汽车清单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 (
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);
}
}