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