LINQ查詢操作符淺析
LINQ有很多值得學習的地方,這里我們主要介紹LINQ查詢操作符,包括介紹LINQto Entities等方面
語言集成查詢 (LINQ) 允許開發人員通過強類型化語法使用 Microsoft® .NET Framework 3.5 代碼編寫類似 SQL 的查詢。然后,各種LINQ提供程序,如LINQto Objects(可利用它根據對象層次結構編寫查詢)和LINQto Entities(可利用它根據實體框架的概念模型編寫查詢)可根據代表數據存儲的細微差別來有效處理這些查詢。
除強類型化語法外,LINQ查詢還具有一個標準LINQ查詢操作符庫來增強其功能。這些標準LINQ查詢操作符對序列進行運算并可執行各種運算,如確定序列中是否存在某個值以及對序列運行合計函數(如求和)。
在本月的專欄中,我將使用LINQ來執行實際的查詢和運算(會用到LINQto Objects 和LINQto Entities)。我將查詢一個實體集合并使用其導航屬性深入研究一組具備層次結構的實體。我還會為您演示如何對數組和集合應用多個標準LINQ查詢操作符。并展示如何使用 lambda 表達式強化LINQ的標準LINQ查詢操作符,以及如何利用它們來從序列解析特定信息并對序列執行復雜的邏輯運算。
操作符和LINQ
LINQ自身功能非常強大,無論使用的是LINQto XML、LINQto DataSets、LINQto Entities、LINQto Objects 還是附帶的任何其他LINQ提供程序。LINQ的核心功能在于其強類型化查詢語法,它可用于任意此類提供程序。當將LINQ與一個或多個標準LINQ查詢操作符結合使用時,會得到一個功能更為強大的工具集,從而可精細地控制一組數據。
標準LINQ查詢操作符在 System.LINQ命名空間中的 System.Core.dll 程序集中作為靜態類 Enumerable 和 Queryable 的擴展方法存在,并且可用于實現 IEnumerable<T> 或 IQueryable<T> 的對象。這樣它們就能使用LINQto Entities 和LINQto SQL 之類的提供程序對各類對象執行運算,從內存中的集合和數組(序列)到遠程數據庫。
可輕松地確定處理特定任務時所擁有的操作符。如果要在LINQ查詢中使用操作符,可使用 Queryable 靜態類可用擴展方法中的操作符。如果要對實現 IEnumerable<T> 的序列使用操作符,可使用 Enumerable 靜態類中的一個擴展方法。但是,請記?。翰⒎?Queryable 類中的所有操作符都適用于基礎數據存儲,因此運行時可能不支持某些操作符。
操作符類型
操作符有多種類型(使用對象瀏覽器查看 Enumerable 和 Queryable 類即可找到所有操作符)??衫盟鼇泶笾铝私庖幌虏僮鞣峁┑墓δ?。我將使用LINQto Objects 和LINQto Entities 展示一小組此類操作符,以顯示它們如何為實際應用程序帶來好處。
Figure A Categories of Operators
【編輯推薦】