我正在尝试对列表进行排序。该列表中的每个元素都有var1,var2和var3。
当我尝试以下代码时:
var orderedList = copiedList.OrderByDescending(c => c.var1).ThenBy(d => d.var2).ThenBy(e => e.var3).ToList();
我按照自己的意愿降低了var1,但我也得到var2降序而不是升序。
我尝试将var2更改为OrderByDescending,并尝试撤消效果但不起作用。
关于我做错了什么以及如何让var2和var3升序同时仍然让var1降序的任何提示?
答案 0 :(得分:1)
您的代码的某些其他部分或您使用的集合类型必定存在问题。此代码产生预期结果:
class TestClass {
public double var1 { get; set; }
public double var2 { get; set; }
public double var3 { get; set; }
}
然后使用这个类:
List<TestClass> l = new List<TestClass>();
l.Add(new TestClass() { var1 = 0.5, var2 = 102, var3 = 1 });
l.Add(new TestClass() { var1 = 0.5, var2 = 0, var3 = 1 });
List<TestClass> ordered = l.OrderByDescending(c => c.var1).ThenBy(d => d.var2).ThenBy(e => e.var3).ToList();
当我运行它时,var2 = 0的实例总是首先出现在有序列表中。