如何在c#/ .net中对List <T>进行排序

Pra*_*ari 13 c# sorting list

我有一节课PropertyDetails:

public class PropertyDetails
{

     public int Sequence { get; set; }

     public int Length { get; set; }

     public string Type { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我正在创建一个PropertyDetailsas 列表

List<PropertyDetails> propertyDetailsList=new List<PropertyDetails>();
Run Code Online (Sandbox Code Playgroud)

我想按此排序PropertyDetails.Sequence.

Linq解决方案是受欢迎的.

Luk*_*keH 30

如果要对现有列表进行现场排序,则可以使用以下Sort方法:

List<PropertyDetails> propertyDetailsList = ...
propertyDetailsList.Sort((x, y) => x.Sequence.CompareTo(y.Sequence));
Run Code Online (Sandbox Code Playgroud)

如果要创建列表的新的已排序副本,则可以使用LINQ的OrderBy方法:

List<PropertyDetails> propertyDetailsList = ...
var sorted = propertyDetailsList.OrderBy(x => x.Sequence).ToList();
Run Code Online (Sandbox Code Playgroud)

(如果您不需要将结果作为具体结果,List<T>则可以省略最终ToList调用.)


Bor*_*rja 5

使用linq你可以使用类似于:

list.OrderBy(x => x.Sequence).toList();  
Run Code Online (Sandbox Code Playgroud)

但我更喜欢使用自定义比较器.

  • 这不是“就位”,并且效率较低,因为它必须创建一个全新的集合。 (2认同)

Ily*_*gan 2

当可以使用泛型时,切勿在 C# 中使用非泛型集合。仅使用通用集合有很多原因(非常特殊的情况除外)。

有关详细信息,请参阅此问题: 您什么时候不使用通用集合?

所以你可以使用List<PropertyDetails>(我相信它公开了一个Sort()方法)或SortedList<,>.