close
在使用LINQ的查詢運算式時,程式為了能在執行時動態確認運算式的內容,都會使用到Expression Tree,如果想讓自己實作的類別支援較複雜的查詢,就會用到Expression Tree。
下圖是Express Tree的架構圖,所謂的Expression Tree就是運算式的表達方式。
下列程式碼會宣告一個Expression物件,並且將這個Expression所需要的參數給印出來。
執行結果。
而下列程式碼則是將這個運算式的運算元及運算子給印出來。
執行結果。
從執行結果可以知道這個運算式是一個加法運算,而左右兩邊都是單一參數。
如果將運算式改得更複雜一點,像是將原本的x改為x*2。
執行結果。
從圖中可以知道結果已經從前面的Parameter變成Multiply,所以可以知道它是一個乘法運算。
接下來示範的是,將運算式實際執行。
執行結果。
如果想根據運算式不同的運算子而有不同的執行方式,可以根據ExpressionType去判斷。
執行結果。
Expression Tree是一個很抽象的東西,但為了了解LINQ的運作方式,這是一個不得不學的課題。
參考資料
運算式樹狀架構
全站熱搜
留言列表