我有一个扩展方法,用于配置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
有人可以指导我如何解决这个问题
答案 0 :(得分:0)
我不确定您遇到的问题是什么,也不确定问题的第一部分和第二部分是如何相关的。
我可以告诉你,你的第一个表达式中的三元运算符需要将null
强制转换为bool?
,因此它将变为:
Expression<Func<object,bool?>> filtere = obj=>obj == null
? (bool?)null
: obj.ToString().StartsWith("xyz");
此外,两个表达式不能共享filtere
的相同变量名。
除此之外,你需要更详细地解释一下你想要做什么。