OrderBy和OrderbyDescending对多个变量没有给出预期的结果

时间:2014-10-24 14:10:27

标签: c# wpf

我正在尝试对列表进行排序。该列表中的每个元素都有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降序的任何提示?

1 个答案:

答案 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的实例总是首先出现在有序列表中。