我将提供其他所有人已发布内容的替代方法。
System.Reflection.PropertyInfo prop = typeof(YourType).GetProperty("PropertyName");query = query.OrderBy(x => prop.GetValue(x, null));这样可以避免重复调用反射API以获取该属性。现在唯一的重复调用就是获取值。
然而
我主张使用a
PropertyDescriptor代替,因为这将允许将custom
TypeDescriptor分配给您的类型,从而使轻量级操作可以检索属性和值。在缺少自定义描述符的情况下,无论如何它都会退回去反映。
PropertyDescriptor prop = TypeDescriptor.GetProperties(typeof(YourType)).Find("PropertyName");query = query.OrderBy(x => prop.GetValue(x));至于加快速度,请
HyperDescriptor在CodeProject上查看Marc
Gravel的项目。我已经成功地使用了它;它是针对业务对象进行高性能数据绑定和动态属性操作的救生器。



