Как отсортировать список <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<,>
.