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

时间:2011-09-16 20:08:30

标签: c# linq lambda expression-trees

我有一个扩展方法,用于配置telerik网格的过滤。它接收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

有人可以指导我如何解决这个问题

1 个答案:

答案 0 :(得分:0)

我不确定您遇到的问题是什么,也不确定问题的第一部分和第二部分是如何相关的。

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

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

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

除此之外,你需要更详细地解释一下你想要做什么。