2011-09-16 57 views
1

我有一個擴展方法,用於配置telerik網格的過濾。它接收lambda表達式作爲參數。是有可能使從現有的新的表現形式,例如從現有的Lambda表達式創建動態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指導我如何定位這個問題

+0

它可以做到;你有一個源表達式的例子,你想把它轉換成什麼? – Jacob

+0

沒有它第一次我想創建一個,不知道從哪裏開始 –

+0

args是'Expression >'類型的源lambdas的數組,我想將它們轉換爲寫在第二個代碼段 –

回答

0

我不知道你遇到的問題是什麼,以及問題的第一部分和第二部分如何相關。

我可以告訴你,在你第一次表達三元運營商將需要轉換的是nullbool?,因此,它將成爲:

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

而且,這兩個表達式不能共享的filtere相同的變量名。

除此之外,您需要更詳細地解釋您要做的事情。

+0

Jay其不是我的方法的身體。它是我想從'Expression >'開始實現的目標表達式的示例。目標是創建一個「Expression >'類型的表達式,如果對象是可以爲空的,那麼'Expression >'否則。 –