0

我有一个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()

4

3 回答 3

7

一种方法是使用Enumerable.OrderBy:

var ordered = vehicles
        .OrderByDescending(v => v.VehId == "CAR")
        .ThenBy(v => v.VehName);

这是一个演示:http: //ideone.com/QAgzd

于 2012-07-10T10:34:46.897 回答
2

IComparable<Vehicle>使用您想要的标准实施,然后使用排序。

于 2012-07-10T10:31:12.267 回答
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()在开始时简单地打电话来取车。

于 2012-07-10T10:32:57.597 回答