【发布时间】:2010-12-13 01:00:17
【问题描述】:
假设我有两个类:
class person
{
int ID
string name
Address address
}
class address
{
int ID
string street
string country
}
这些类或多或少是给定的,老实说,它们是通过 nHibernate 映射的 :)
在一个网格(datatables.net 作为基础)中,我想要一个与类型无关的排序。
因此我创建了一个 lambda 表达式:
var param = Expression.Parameter(typeof(T), typeof(T).Name);
var sortExpression = Expression.Lambda<Func<T, object>>
(Expression.Convert(Expression.Property(param, "Property to sort"), typeof(object)), param);
如果我将 Person 作为类型 T 传递并将“要排序的属性”替换为“名称”,它可以正常工作(创建一个正确的 lambda)。如果要排序的属性是“address.street”,它将不起作用,向我抛出以下错误:
Property 'address.street' is not defined for type 'person'
到目前为止,我只看到一个解决方案,但还不够清楚...我会尝试拆分包含 Property-Name 的字符串(由 . 拆分。)
谁能给出更好的解决方案?我需要将 sortExpression 添加到 IQueryable 对象 query.OrderBy(sortExpression)。
不确定我的标题是否清楚,请继续更正。
提前致谢。
【问题讨论】:
标签: asp.net-mvc linq lambda