LINQ查詢子句學習筆記
學習LINQ查詢時,經常會遇到LINQ查詢子句問題,這里將介紹LINQ查詢子句問題的解決方法。
制定數據源(FROM):
在LINQ查詢子句中,第一步是指定要查詢的數據源。因此,查詢中的 From 子句總是最先出現。語法是:FROM 范圍變量 in 數據源 ,范圍變量類似于循環迭代變量,但在查詢表達式中,實際上不發生迭代。執行查詢(通常使用 For Each 循環執行)時,范圍變量將用作對 數據源集合中的每個元素的引用。From 子句用于標識查詢的源數據,以及用于引用源集合中元素的變量。這些變量稱為范圍變量??梢灾付ú樵冎械亩鄠€ From 子句,以標識要聯接的多個集合。指定多個集合時,將單獨循環訪問這些集合,或者如果這些集合是相關的,則可以聯接它們。您可以通過使用 Select 子句隱式聯接集合,或者通過使用 Join 或 Group Join 子句顯式聯接集合。或者,您可以在單個 From 子句中指定多個范圍變量和集合,并用逗號將每個相關的范圍變量和集合分隔開。每個 From 子句后面可跟其他LINQ查詢子句的任意組合以優化查詢。
范圍變量,用于在查詢循環訪問 集合 時,引用 集合 的每個成員。必須為可枚舉類型。
范圍變量的類型可選。如果不指定 類型,則編譯器自動根據集合推斷范圍變量的類型。后續 From 子句可以引用 From 子句中的范圍變量,或者它們可以引用以前的 From 子句中的范圍變量。
- Dim allOrders = From cust In GetCustomerList() _ From ord In cust.Orders _ Select ord
篩選數據(WHERE):
Where子句用于執行篩選。篩選器指定要在結果序列中包含數據源中的哪些元素,可以使用邏輯運算符(如 And、Or、AndAlso、OrElse、Is 和 IsNot)可以將多個表達式組合在一個Where子句中。
默認情況下,查詢表達式直到被訪問時才計算結果。因此,在訪問查詢前,不會計算Where子句。所以如果值位于Where子句中使用的查詢外部,請確保查詢執行時在Where子句中使用適當的值。
您可以在Where子句中調用函數,以便對集合中當前元素的值執行計算或運算。在Where子句中調用函數可使查詢在定義后立即執行,而不是在訪問時執行。
【編輯推薦】