摘要:
LINQ提供了兩個平行的架構:針對本地對象集合的本地查詢(local queries),以及針對遠程數據源的解釋查詢(Interpreted queries)。
在討論LINQ to SQL等具體技術之前,我們有必要先對這兩種架構進行了解和學習,只有在完全理解了他們的特點和原理后,才能夠在LINQ to SQL等的學習過程中做到知其然且知其所以然,才能充分利用本地查詢和解釋查詢的各自優勢,寫出高效正確的LINQ查詢。本篇目的就是試圖對解釋查詢的工作方式和實現原理進行剖析。
簡單回憶一下之前我們討論的本地查詢架構,它用來操作實現了IEnumerable的對象集合。本地查詢對應Enumerable類的查詢運算符,返回裝飾sequence以支持延遲執行。在創建本地查詢時提供的lambda表達式最終會生成對應IL代碼,就像其它C#方法那樣。
而解釋查詢用來操作實現了IQueryable的sequence,并對應Queryable類中的查詢運算符,這些運算符會生成運行時能被檢測的表達式樹,相應的LINQ Provider通過分析表達式樹最終得到查詢結果。 閱讀全文
posted @ 2011-11-07 10:49
Life a Poem
閱讀(12822)
評論(54)
推薦(26)

浙公網安備 33010602011771號