我有一个班级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解决方案。
答案 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<,>
。