排序List< T>类型的成员在运行时决定

本文关键字:成员 运行时 决定 类型 List 排序 | 更新日期: 2023-09-27 18:15:06

我有一个类型Customer

Class Customer
{
    string Name;
    Address address;
    ...
}

类地址为

Class Address  
{  
    string Street;  
    int House;  
    ....  
}

我正在创建一个客户列表

List<Customer> CustSource= new List<Customer>();

然后我将CustSource绑定到一个中继器。中继器有一个名为'Street'的列与CustSource.address绑定。Street, 'House Number'与CustSource.address绑定。与CustSource绑定的'Name'。姓名等等。我想排序绑定源,即在运行时确定的字段上的CustSource。当我知道在编译时对哪个字段进行排序时,我知道它可以作为CustSource.OrderBy(x=>x.Name)来完成,但是为了在运行时确定字段并进行排序,我在本文的帮助下编写了一个扩展方法。

问题是,当我对客户类的基本属性如'Name'进行排序时,它工作得很好,但我如何对地址进行排序。CustSource的街道属性?

排序List< T>类型<U>的成员在运行时决定

在这个问题的答案的帮助下,我能够解决这个问题(我也在我的问题中链接到这个帖子,但是没有足够的耐心去浏览所有的答案,我的错)。
引用张贴这个答案的人的话,我所需要的只是
if (propertyName.Contains('.')) { // support to be sorted on child fields. String[] childProperties = propertyName.Split('.'); property = typeof(TEntity).GetProperty(childProperties[0]); propertyAccess = Expression.MakeMemberAccess(parameter, property); for (int i = 1; i < childProperties.Length; i++) { property = property.PropertyType.GetProperty(childProperties[i]); propertyAccess = Expression.MakeMemberAccess(propertyAccess, property); } }

看起来在我的问题中写"Child Properties"会让它更容易回答。