对列表进行排序以将元素放在顶部

时间:2012-07-10 10:27:16

标签: c#

我有一个List<Vehicles>,其中包含4个项目:

我的Vehicles对象有2个属性:VehIdVehName

我列表中的4项是:

1)VehId : "LOR", VehName : "Lorry"

2)VehId : "CAR", VehName : "Car"

3)VehId : "BOA", VehName : "Boat"

4)VehId : "PLN", VehName : "Plane"

我想做的是将Car车辆放在列表的顶部。我该怎么做?使用.OrderBy()还是.Sort()

3 个答案:

答案 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()来开车。