2012-06-25 61 views
1

我有一个名为“layer”的整型变量的类,这里有一个我想按升序排序的类的列表。我会如何去做这件事?我已经尝试了一个或两个我在这里找到的LINQ方法,但无济于事。按变量排序c#对象列表

回答

3
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

+0

'entities = entities.OrderBy(f => f.layer).ToList ();'这应该工作吗?我使用它,但我得到的结果只是在我添加它们的顺序中。 – ben657

+0

@ ben657:'ToList()'根据新订单创建一个新的List,但它不会修改旧的'List '。 –

+0

但我分配它有没有我?无论我在想什么,或者我将新的有序列表分配给旧的列表? – ben657

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()。

0

后这些方法都没有工作,我做了些研究,并在这个片段中,其工作对我想出了:

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

只是与任何对象是在列表中,并且层代替实体不管你想排序。