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

时间:2011-01-18 12:27:00

标签: c# list sorting

我有一个班级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 个答案:

答案 0 :(得分:29)

如果要对现有列表进行现场排序,则可以使用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来电。)

答案 1 :(得分:5)

使用linq你可以使用类似的东西:

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

有关详细信息,请参阅此问题: When would you not use Generic Collections?

因此,您可以使用List<PropertyDetails>(我相信会公开Sort()方法)或SortedList<,>