как отсортировать список <T>в c # / .net - PullRequest
13 голосов
/ 18 января 2011

У меня есть класс PropertyDetails:

public class PropertyDetails
{

     public int Sequence { get; set; }

     public int Length { get; set; }

     public string Type { get; set; }
}

Я создаю список PropertyDetails как

List<PropertyDetails> propertyDetailsList=new List<PropertyDetails>();

Я хочу отсортировать этот список по PropertyDetails.Sequence.

Решения Linq приветствуются.

Ответы [ 4 ]

29 голосов
/ 18 января 2011

Если вы хотите отсортировать существующий список на месте, вы можете использовать метод Sort:

List<PropertyDetails> propertyDetailsList = ...
propertyDetailsList.Sort((x, y) => x.Sequence.CompareTo(y.Sequence));

Если вы хотите создать новую, отсортированную копиюзатем вы можете использовать метод LINQ OrderBy:

List<PropertyDetails> propertyDetailsList = ...
var sorted = propertyDetailsList.OrderBy(x => x.Sequence).ToList();

(И если вам не нужны результаты как конкретный List<T>, то вы можете опустить окончательный ToList вызов.)

5 голосов
/ 18 января 2011

Используя linq, вы можете использовать нечто похожее на:

list.OrderBy(x => x.Sequence).toList();  

Но я предпочитаю использовать пользовательский компаратор.

2 голосов
/ 18 января 2011
var sortedList = propertyDetailsList.OrderBy(pd => pd.Sequence);
1 голос
/ 18 января 2011

Никогда не используйте неуниверсальные коллекции в C #, когда вместо них можно использовать дженерики. Есть много причин использовать только общие коллекции (за исключением очень особых случаев).

См. Этот вопрос для получения дополнительной информации: Когда бы вы не использовали общие коллекции?

Таким образом, вы можете использовать List<PropertyDetails> (который, я считаю, предоставляет метод Sort()) или SortedList<,>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...