gpt4 book ai didi

asp.net-mvc - 使用Linq.Expression使用动态Lambda访问嵌套属性

转载 作者:行者123 更新时间:2023-12-04 03:10:11 35 4
gpt4 key购买 nike

假设我有两个类(class):

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)

不知道我的标题是否清楚,请继续进行更正。

提前致谢。

最佳答案

有什么不清楚的?

您必须将其拆分,然后使用:

Expression.Property(Expression.Property(param, "address"), "street")

关于asp.net-mvc - 使用Linq.Expression使用动态Lambda访问嵌套属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1674041/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com