動態Lambda表示式列印HelloWorld

2022-01-17 13:35:00 字數 1142 閱讀 5025

最近在用c#與資料庫打交道。開發過程中採用了orm模型(以前是純sql玩法,複雜的邏輯用儲存過程做)。

為了能通過配置檔案動態地查詢字段,也就是說需要能這樣寫:

db.asquery.select("

字段")//

偽** 

通過多方查詢終於找到了方案,那就是用動態lambda表示式樹(.net3.5以後的版本支援)。

後來看別人寫的orm**中,將c#**轉為sql語句時出採用了表示式樹,所以馬上提起了學習興趣。

先寫著寫乙個hello world ,就是動態地拼出乙個 x=>console.writeline(x);

1 actionaction = x =>console.writeline(x);

2 action("

hello world

");

**如下:

1

//引數 x => console.writeline(x) 中 最前面的那個 x

2var para = expression.parameter(typeof(string), "x"

);3//找到 onsole.writeline(string value) 這個版本

4 methodinfo method = typeof(console).getmethod("

writeline

", new type );5//

拼接 console.writeline(x) 方法體

6var call = expression.call(null

, method, para);7//

拼接成 x => console.writeline(x) 格式

8var lambda = expression.lambda>(call, para);9//

轉換成委託

10var action =lambda.compile();

11 action("

hello world

");

以下為執行的時候看到的效果

先寫乙個做為入門,慢慢研究。

lambda表示式 lambda表示式

1.概述 c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。lambda 的語法形式如下 函式物件引數 操作符過載函式引數 mutable 或 exception 宣告 返回值型別可以看到,lambda 主要分為五個部分 函式物件引數 操作符過載函式引數 muta...

動態建立 Lambda 表示式

作為 delegate 的更深度進化,lambda 讓我們的 顯得更加簡潔和優雅,但同時也面臨乙個問題,就是如何依據外部條件動態構建乙個 lambda 表示式。或許你會奇怪這個需求是如何產生的 首先,lambda 在 dlinq 中承擔了以往 t sql 的部分角色 其次,在資料庫設計中,我們往往需...

動態建立 Lambda 表示式

首先我們看乙個簡單 lambda 表示式的構成。i i 5 在這個表示式中,i 被稱為 parameter,i 5 是 body。我們可以對 body 進行更進一步的分解,那麼 i 5 分別包含引數 i 操作符 以及乙個常數 5 所有這些通過特定順序的組合,從而構建乙個完整的 lambda 表示式。...