2016-03-29 21 views
-1

我需要創建一個表達式樹,它只返回接收到的參數。e => e到表達式樹

這是我需要的lambda表達式e => e轉換爲表達式樹。

任何想法?

謝謝。

+4

您發佈已經做了代碼。恭喜,你完成了。 – Servy

+0

我必須使用表達式樹。我知道這是生成我想要的lambda表達式。 – Zuryx

+2

是的,但是您提供的代碼可以是一種在C#中編寫表達式樹的方法(根據上下文,相同的代碼也可以編寫委託或方法體) –

回答

3

這將做到這一點:的lambda.ToString()

var param = Expression.Parameter(typeof(int), "e"); 
var body = param; 
var lambda = Expression.Lambda<Func<int, int>>(body, param); 

輸出:

e => e 

請注意,你需要給e類型(在這種情況下,它是一個int)。


預編輯注:

你寫什麼(e => e)實際上已經是一個表達式樹(如果定義爲Expression<T>,這是)。但是,您可能希望使用工廠方法來構建樹。

+0

感謝羅布,這正是我想:) – Zuryx

+0

@祖瑞克不用擔心:) – Rob

+0

羅布,我已經重寫了@ Zuryx口中的一些詞的問題 - 看看他們是否同意並可能與問題保持一致(我真的不認爲「 'e => e'已經是表達式「討論是有建設性的」)。 –

1

e => e。而已。

當然需要鍵入它,例如,用於整數的Expression<Func<int, int>> intTree = e => e;,用於字符串的Expression<Func<string, string>> stringTree = e => e;等等。

現在你已經得到了來自拉姆達樹,你可以檢查它還是要樹爲任何其他:

Console.WriteLine(intTree.Parameters[0].Name); // "e" 
Console.WriteLine(intTree.CanReduce); // false 
Func<int, int> intIdentityFunction = intTree.Compile(); 
相關問題