C# 如何对列表进行排序<;元组<;整数,双精度>&燃气轮机;
您好,谢谢您阅读这篇文章 我有一个这样创建的列表C# 如何对列表进行排序<;元组<;整数,双精度>&燃气轮机;,c#,list,sorting,C#,List,Sorting,您好,谢谢您阅读这篇文章 我有一个这样创建的列表 List<Tuple<int, double>> Ratings = new List<Tuple<int, double>>(); 如何对列表进行排序,使最高的双精度值位于顶部?像这样 Index int double [0] 3 5,0 [1] 1 4,5 [2] 2 2,5 [3]
List<Tuple<int, double>> Ratings = new List<Tuple<int, double>>();
如何对列表进行排序,使最高的双精度值位于顶部?像这样
Index int double
[0] 3 5,0
[1] 1 4,5
[2] 2 2,5
[3] 4 1,0
你可以简单地使用
Ratings = Ratings.OrderByDescending (t => t.Item2).ToList();
如果您尝试过使用列表中的方法,intellisense应该向您推荐,这是很自然的:
Ratings.Sort((x, y) => y.Item2.CompareTo(x.Item2));
// at this stage the Ratings list will be sorted as desired
列表评级=新列表();
添加(新元组(1,4.5));
添加(新元组(4,1.0));
添加(新元组(3,5.0));
添加(新元组(2,2.5));
var list=Ratings.OrderByDescending(c=>c.Item2.ToList();
var comparer=comparer.Create((x,y)=>-1*x.Item2.CompareTo(y.Item2));
排序(比较器);
Ratings=Ratings.OrderByDescending(tuple=>tuple.Item2).ToList()
?如果可以创建新列表,只需使用.OrderByDescending(x=>x.Item2.ToList()
。对于就地排序,可以使用list.Sort((x,y)=>Comparer.Default.Compare(y.Item2,x.Item2))
乘以-1
不是一个好主意,因为它不会改变int.MinValue
的符号。这是for comparer的有效返回值,即使双比较器可能不返回该值。交换x
和y
。List.Sort
有一个重载,它接受比较
委托,无需构造比较器。您应该使用OrderByDescending()的返回值来处理
Ratings.Sort((x, y) => y.Item2.CompareTo(x.Item2));
// at this stage the Ratings list will be sorted as desired
Ratings.OrderByDescending(t => t.Item2);
List<Tuple<int, double>> Ratings = new List<Tuple<int, double>>();
Ratings.Add(new Tuple<int, double>(1, 4.5));
Ratings.Add(new Tuple<int, double>(4, 1.0));
Ratings.Add(new Tuple<int, double>(3, 5.0));
Ratings.Add(new Tuple<int, double>(2, 2.5));
var list = Ratings.OrderByDescending(c => c.Item2).ToList();
var comparer = Comparer<Tuple<int, double>>.Create((x, y) => -1 * x.Item2.CompareTo(y.Item2));
Ratings.Sort(comparer);