我有一个List<Vehicles>
,其中包含4个项目:
我的Vehicles
对象有2个属性:VehId
,VehName
我列表中的4项是:
1)VehId : "LOR", VehName : "Lorry"
2)VehId : "CAR", VehName : "Car"
3)VehId : "BOA", VehName : "Boat"
4)VehId : "PLN", VehName : "Plane"
我想做的是将Car
车辆放在列表的顶部。我该怎么做?使用.OrderBy()
还是.Sort()
?
答案 0 :(得分:6)
一种方法是使用Enumerable.OrderBy:
var ordered = vehicles
.OrderByDescending(v => v.VehId == "CAR")
.ThenBy(v => v.VehName);
这是一个演示:http://ideone.com/QAgzd
答案 1 :(得分:2)
使用您想要的条件实施IComparable<Vehicle>
,然后使用排序。
答案 2 :(得分:1)
这样的事情应该有效:
vehicles.Sort((a,b) => -(a.VehId == "CAR").CompareTo(b.VehId == "CAR"));
如果需要,您可以通过以下方式为IComparable<Vehicle>
实施应用相同的逻辑:
class Vehicle : IComparable<Vehicle>
{
public int CompareTo(Vehicle other)
{
int c = (this.VehId == "CAR").CompareTo(this.VehId == "CAR");
return c;
}
// other class code...
}
然后你可以简单地拨打vehicles.Sort()
来开车。