【问题标题】:using a method with a func argument in System.Linq.Dynamic.DynamicQueryable在 System.Linq.Dynamic.DynamicQueryable 中使用带有 func 参数的方法
【发布时间】:2011-09-13 05:39:29
【问题描述】:

我正在使用一种方法 Rank 来使用一些自定义逻辑来获取产品的排名,如下所示:

product.Rank(p=>p.Price);

public class Product
{
     public double Price {get;}
     public int Rank(Func<Product, double> compfunc)
     {
     ...
     }
}

我想在使用扩展库System.Linq.Dynamic.DynamicQueryable的where子句中使用此方法

例如:

products.Where("Rank(p=>p.Price) == 0")

虽然上面的行不通。 这样的函数可以传吗?

【问题讨论】:

  • 您也许可以为 IQueryable 创建一个扩展方法,该方法接受 lambda 并在内部调用 Rank 和 Where...
  • 为什么要在这样的查询中使用字符串?
  • 我正在尝试为用户构建一个自定义表达式构建器,因此可以从一组预定义的属性构建一些条件/标准。使用字符串在内部构建表达式对我来说似乎是一个不错的选择。

标签: c# linq dynamic iqueryable


【解决方案1】:

你可能会这样做:

products.Where("Rank(@0) == 0", new Func<Product, double>(p => p.Price));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 2019-01-07
    • 1970-01-01
    相关资源
    最近更新 更多