close

在使用LINQ的查詢運算式時,程式為了能在執行時動態確認運算式的內容,都會使用到Expression Tree,如果想讓自己實作的類別支援較複雜的查詢,就會用到Expression Tree。

下圖是Express Tree的架構圖,所謂的Expression Tree就是運算式的表達方式。

IC64588

 

下列程式碼會宣告一個Expression物件,並且將這個Expression所需要的參數給印出來。

2011-04-10_162821

 

執行結果。

2011-04-10_162849

 

而下列程式碼則是將這個運算式的運算元及運算子給印出來。

2011-04-10_162914

 

執行結果。

2011-04-10_162933

從執行結果可以知道這個運算式是一個加法運算,而左右兩邊都是單一參數。

 

如果將運算式改得更複雜一點,像是將原本的x改為x*2。

2011-04-10_163212

 

執行結果。

2011-04-10_163249

從圖中可以知道結果已經從前面的Parameter變成Multiply,所以可以知道它是一個乘法運算。

 

接下來示範的是,將運算式實際執行。

2011-04-10_163306

 

執行結果。

2011-04-10_163328

 

如果想根據運算式不同的運算子而有不同的執行方式,可以根據ExpressionType去判斷。

2011-04-10_163419

 

執行結果。

2011-04-10_163438

 

Expression Tree是一個很抽象的東西,但為了了解LINQ的運作方式,這是一個不得不學的課題。

 

參考資料

運算式樹狀架構

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 卑微研究生 的頭像
    卑微研究生

    卑微研究生的部落格

    卑微研究生 發表在 痞客邦 留言(0) 人氣()