2

我有一个带有一个名为“layer”的整数变量的类,有一个这些类的列表,我想按升序排序。我该怎么做呢?我已经尝试过在这里找到的一两种 LINQ 方法,但无济于事。

4

3 回答 3

5
var foos = new List<Foo>(); 
// consider this is your class with the integer variable called layer

var ordered = foos.OrderBy(f => f.layer);

Enumerable.OrderBy

于 2012-06-25T13:52:21.880 回答
1

还有其他几种方法...

假设层在范围内......

    List<Item> list = new List<Item>();

    list.Add(new Item(10));
    list.Add(new Item(2));
    list.Add(new Item(5));
    list.Add(new Item(18));
    list.Add(new Item(1));

    list.Sort((a, b) => { return a.Layer.CompareTo(b.Layer); });

或者,您可以实现 IComparable 接口,这将允许您按类内部所需的任何内容进行排序。假设该字段始终是您想要排序的内容,然后只需调用 sort()。

于 2012-06-25T14:12:45.963 回答
0

在这两种方法都不起作用之后,我做了更多的研究,并提出了这个对我有用的片段:

 entities.Sort(delegate(Entity a, Entity b) { return a.layer.CompareTo(b.layer); });

只需将 Entity 替换为列表中的任何对象,然后使用您想要排序的任何对象进行分层。

于 2012-06-26T10:48:55.580 回答