小编gri*_*iti的帖子

使用Linq.Expression访问具有动态lambda的嵌套属性

我们假设我有两个类:

class person
{
    int ID
    string name
    Address address
}
class address
{
    int ID
    string street
    string country
}
Run Code Online (Sandbox Code Playgroud)

这些类或多或少给出,它们通过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);
Run Code Online (Sandbox Code Playgroud)

如果我将Person作为类型T传递并用"name"替换"要排序的属性",它可以正常工作(创建一个正确的lambda).如果要排序的属性是"address.street"它将无法正常工作,抛出以下错误:

Property 'address.street' is not defined for type 'person'
Run Code Online (Sandbox Code Playgroud)

到目前为止我只看到一个解决方案,但不够清楚...我会尝试拆分包含Property-Name的字符串(拆分.)

谁能提供更好的解决方案?我需要将sortExpression添加到IQueryable对象query.OrderBy(sortExpression).

不确定我的标题是否清楚,请继续并更正.

提前致谢.

linq asp.net-mvc lambda

10
推荐指数
3
解决办法
6659
查看次数

Global.asax Application_start会针对每个操作触发

我正在研究一个MVC项目,表现很好.

在application_start上,数据库被索引为lucene.net搜索(并且对象的每次更改都会扩展索引).但是application_start会在我在页面上调用的每个操作上运行.

为什么它不仅一次触发application_start?当我知道要去哪里时,我会发布任何代码;)

我不确定web.config是否会导致此行为...

解决方案:Lucene.net将其索引写入bin文件夹,在更改路径后,应用程序不再融化我的脸了:)

asp.net asp.net-mvc lucene.net web-applications

5
推荐指数
1
解决办法
835
查看次数

特定控制器的操作列表

我有一个控制器名称列表,然后将列出给定控制器中的所有操作(名称,GUID).

此处找到的所有控制器列表.

我还在阅读列出控制器上具有特定属性的所有操作,这些属性与我的目的相匹配,因为我还需要具有特定属性的操作.但我只有所选控制器的名称/ GUID,而不是对象本身.

我的场景:用户选择一个控制器(级联下拉列表),然后选择来自该控制器的操作来配置一些访问(和链接).因此,我只需要具有自定义属性的操作.

c# asp.net-mvc

1
推荐指数
1
解决办法
1109
查看次数

标签 统计

asp.net-mvc ×3

asp.net ×1

c# ×1

lambda ×1

linq ×1

lucene.net ×1

web-applications ×1