2012-06-25 111 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); }); 

只是與任何對象是在列表中,並且層代替實體不管你想排序。