我创建了一个类,如下所示:
public class StringMatch
{
public int line_num;
public int num_of_words;
}
我创建了一个列表
List<StringMatch> sm;
它中的元素很少。
如何使用Comparison<T>
比较重载对此列表进行排序?
必须根据num_of_words
字段完成排序。
答案 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();