Как отсортировать список <T> в С#/.net

У меня есть класс 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 приветствуется.

Ответ 1

Если вы хотите отсортировать существующий список на месте, вы можете использовать метод 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.)

Ответ 2

С помощью linq вы можете использовать нечто похожее на:

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

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

Ответ 3

var sortedList = propertyDetailsList.OrderBy(pd => pd.Sequence);

Ответ 4

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

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

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