从现有Lambda表达式创建动态Lambda

本文关键字:Lambda 创建 动态 表达式 | 更新日期: 2023-09-27 18:08:44

我有一个扩展方法来配置teleerik网格的过滤。它接收lambda表达式作为参数。是否有可能从现有的表达式中创建新的表达式,例如

public static void ConfigureFiltering<T>(this HtmlHelper html, Configurator conf, params Expression<Func<T,object>>[] args) where T:class 
{
 }   

我想创建像

这样的表达式
Expression<Func<object,bool?>> filtere = obj=>obj == null? null: obj.ToString().StartsWith("xyz");//return type is nullable cause of string
Expression<Func<object,bool>> filtere = obj=>Convert.ToInt32(obj) < 20 //return type is non-nullable cause of int

有人可以PLZ指导我如何针对这个问题

从现有Lambda表达式创建动态Lambda

我不知道你的问题是什么,也不知道你的问题的第一部分和第二部分是如何联系在一起的。

我可以告诉你,你的第一个表达式中的三元运算符需要将null转换为bool?,所以它将变成:

Expression<Func<object,bool?>> filtere = obj=>obj == null
    ? (bool?)null 
    : obj.ToString().StartsWith("xyz");

同时,两个表达式不能共享filtere的相同变量名。

除此之外,你还需要更详细地解释你要做的事情。