學習LINQ查詢時,經常會遇到LINQ查詢操作問題,這裡將介紹LINQ查詢操作問題的解決方法。
語言集成查詢 (LINQ) 是 Visual Studio 2008 和 .NET Framework 3.5 版中一項突破性的創新,它在對象領域和數據領域之間架起了一座橋梁。
傳統上,針對數據的查詢都是以簡單的字符串表示,而沒有編譯時類型檢查或 IntelliSense 支持。此外,您還必須針對以下各種數據源學習不同的查詢語言:SQL 數據庫、XML 文檔、各種 Web 服務等。LINQ 使查詢成為 C# 和 Visual Basic 中的一等語言構造。您可以使用語言關鍵字和熟悉的運算符針對強類型化對象集合編寫查詢。用 C# 語言編寫的、不完整的 LINQ 查詢,該查詢針對 SQL Server 數據庫,並具有完全類型檢查和 IntelliSense 支持。
LINQ查詢操作由以下三個操作組成:
1、獲取數據源:支持泛型 IEnumerable(Of (T)) 接口的所有對象都可以作為LINQ的數據源,包括Array、List等。
2、創建查詢:指定要從數據源中檢索的哪些信息,還可以指定在返回這些信息之前如何對其進行排序、分組或結構化。創建(定義)的查詢通常存儲在變量中,並不會在定義時馬上執行而是在以後執行。所以記住:查詢變量本身不會執行任何操作,也不會返回任何數據,它只是存儲查詢定義。
3、執行查詢:執行查詢有兩種情況,1是延遲執行;2是立即執行。
3.1、延遲執行:查詢定義並保存在查詢定義變量後,不馬上執行,而是在後續需要時才執行。這通常需要使用 For Each 循環(它返回值序列)或應用標准查詢運算符。對於值序列,可使用 For Each 循環中的迭代變量(在上一個示例中為 number)訪問所檢索的數據。
3.2、立即執行:在立即執行過程中,查詢在定義時執行。當應用需要訪問查詢結果的各個元素的方法時,就會觸發執行。通常使用能夠返回單個值的標准查詢運算符之一來強制立即執行。Count、Max、Average 和 First 就屬於標准查詢運算符。只要應用了這些標准查詢運算符以便計算並返回單一實例結果,這些運算符就會立即執行查詢。例如:
Dim numbers中的偶數個數 = (From num In numbers _
Where num Mod 2 = 0 _
Select num).Count()
還可通過對查詢(立即執行)或查詢變量(延遲執行)調用 ToList 或 ToArray 方法來強制執行查詢,如下面的代碼所示:
Dim evensList = (From num In numbers _
Where num Mod 2 = 0 _
Select num).ToList()
以上介紹LINQ查詢操作