C#如何使用OrderBy对嵌套类的属性进行排序?

4

我有一个IEnumerable集合,其中包含一个类的实例,我想对其进行排序。 我想要排序的属性位于一个嵌套类中。 如何编写语法以使其起作用? 下面的代码显示了我在尝试做什么,尽管它无法工作。

    AbsenceViewModel avm = new AbsenceViewModel();
    if (sort.Column != null)
    {
        if (sort.Column == "OtherLeaveName")
            avm.ListNames = avm.ListNames .OrderBy("NestedClass.Name", sort.Direction);
        else
            avm.ListNames = avm.ListNames (sort.Column, sort.Direction);
    }

所以输入"NestedClass.Name"不起作用。我需要做什么?
1个回答

4
avm.ListNames.OrderBy(x => x.NestedClass.Name)

另外,如果您想在此之后按另一个属性排序,请使用avm.ListNames.OrderBy(x => x.NestedClass.Name).ThenBy(y=> y.NestedClass.Whatever)。您可以查看http://msdn.microsoft.com/en-us/vcsharp/aa336756.aspx#OrderBySimple1获取更多信息。 - Gage
我尝试过了,但它不起作用。"无法将 lambda 表达式类型转换为 'string',因为它不是委托类型"。 - arame3333
我已经加入了 using System.Linq。 - arame3333
1
avm.ListNames的类型是什么?发布你的AbsenceViewModel代码! - Falcon
有没有想过如何使用字符串属性来实现这个功能?我们已经能够做到一级排序,例如:avm.ListNames.OrderBy("Age")。但是对于两级或多级排序,我们还没有可用的代码。例如:avm.ListNames.OrderBy("Profile.Age") - Bangonkali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接