使用List.Sort在C#中对列表进行排序(比较<t>比较</t>

时间:2014-01-03 11:09:25

标签: c# .net list sorting

我创建了一个类,如下所示:

public class StringMatch
{
   public int line_num;
   public int num_of_words;
}

我创建了一个列表

List<StringMatch> sm;

它中的元素很少。

如何使用Comparison<T>比较重载对此列表进行排序? 必须根据num_of_words字段完成排序。

4 个答案:

答案 0 :(得分:20)

您可以使用Linq OrderBy方法 -

sm = sm.OrderBy(i => i.num_of_words).ToList();

答案 1 :(得分:17)

你可以编写比较两个对象的lambda表达式,如下所示:

sm.Sort((x,y)=>x.num_of_words.CompareTo(y.num_of_words));

您可以反向排序添加-

sm.Sort((x,y)=>-x.num_of_words.CompareTo(y.num_of_words));

答案 2 :(得分:2)

official microsoft documentation上有一个用法示例。该示例使用字符串。替换为int供您使用。

private static int CompareDinosByLength(string x, string y)
{
   ...
}

List<string> dinosaurs = new List<string>();
dinosaurs.Add("Pachycephalosaurus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("");
dinosaurs.Add(null);
dinosaurs.Add("Mamenchisaurus");
dinosaurs.Add("Deinonychus");
dinosaurs.Sort(CompareDinosByLength);

一点点google还有很长的路要走。

答案 3 :(得分:0)

使用Comparison是一种更古老,更笨重的排序集合方式。我的建议是使用Linq中的OrderBy方法:

var orderedSm = sm.OrderBy(x => x.num_of_words).ToList();