2012-06-25 2 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

'entity = entities.OrderBy (f => f.layer) .ToList ();' Должен ли это работать? я использую его, но результаты, полученные мной, находятся в порядке, я добавил их все еще. – ben657

+0

@ ben657: 'ToList()' создает новый список на основе нового порядка, но не изменяет старый '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); }); 

Просто заменить Entity с тем, что объект находится в списке, и слой с любым вы хотите сортировать.

Смежные вопросы