LINQ 之 基本 LINQ 查詢操作

2021-09-28 13:10:34 字數 2584 閱讀 8841

在 linq 查詢中,第一步是指定資料來源。像在大多數程式語言中一樣,必須先宣告變數,才能使用它。在 linq 查詢中,最先使用from子句的目的是引入資料來源和範圍變數。

//queryallcustomers 是 ienumerable型別

//資料來源 (customers) 和範圍變數 (cust)

var queryallcustomers = from cust in customers

select cust;

範圍變數類似於foreach迴圈中的迭代變數,但在查詢表示式中,實際上不發生迭代。執行查詢時,範圍變數將用作對 customers 中的每個後續元素的引用。因為編譯器可以推斷 cust 的型別,所以您不必顯式指定此型別。

也許最常用的查詢操作是應用布林表示式形式的篩選器。此篩選器使查詢只返回那些表示式結果為 true 的元素。使用where子句生成結果。實際上,篩選器指定從源序列中排除哪些元素。

var querylondoncustomers = from cust in customers

where cust.city = "london"

select cust;

您可以使用熟悉的 c# 邏輯and(&&)or(||)運算子來根據需要在where子句中應用任意數量的篩選表示式。 

where cust.city = "london" && cust.name = "devon"
通常可以很方便地將返回的資料進行排序。orderby子句將使返回的序列中的元素按照被排序的型別的預設比較器進行排序。

var querylondoncustomers = from cust in customers

where cust.city = "london"

orderby cust.name descending

select cust;

因為 name 是乙個字串,所以預設比較器執行從 a 到 z 的字母排序。若要按相反順序(從 z 到 a)對結果進行排序,請使用 orderby…descending 子句。

使用group子句,您可以按指定的鍵分組結果。

var querylondoncustomers = from cust in customers

group cust by cust.city;

foreach (var querylondoncustomer in querylondoncustomers)

}您可以指定結果應按 city 分組,以便位於倫敦或巴黎的所有客戶位於各自組中。

在本例中,cust.city 是鍵。

在使用group子句結束查詢時,結果採用列表的列表形式。列表中的每個元素是乙個具有 key 成員及根據該鍵分組的元素列表的物件。在迴圈訪問生成組序列的查詢時,您必須使用巢狀的foreach迴圈。外部迴圈用於迴圈訪問每個組,內部迴圈用於迴圈訪問每個組的成員。  

如果您必須引用組操作的結果,可以使用into關鍵字來建立可進一步查詢的識別符號。

//custquery 是 ienumable> 型別

var custquery = from cust in customers

group cust by cust.city

into custgroup

where custgroup.count() > 2

orderby custgroup.key

select custgroup;

這裡的查詢只返回那些包含兩個以上的客戶的組。

聯接運算建立資料來源中沒有顯式建模的序列之間的關聯。例如,您可以執行聯接來查詢位於同一地點的所有客戶和經銷商。在 linq 中,join子句始終針對物件集合而非直接針對資料庫表執行。  

var innerjoinquery = from cust in customers

join dist in distributors on cust.city equals dist.city

select new ;

在 linq 中,join子句始終針對物件集合而非直接針對資料庫表執行。  

在 linq 中,您不必像在 sql 中那樣頻繁使用join,因為 linq 中的外來鍵在物件模型中表示為包含項集合的屬性。

select子句生成查詢結果並指定每個返回的元素的「形狀」或型別。

例如,您可以指定結果包含的是整個 customer 物件、僅乙個成員、成員的子集,還是某個基於計算或新物件建立的完全不同的結果型別。當select子句生成除源元素副本以外的內容時,該操作稱為「投影」。

Linq 查詢基本操作

from 子句 where 子句 select子句 group 子句 into 子句 orderby 子句 join 子句 let 子句 復合from子句 在某些情況下,源序列中的每個元素本身可能是序列 集合 也可能包含序列 用語訪問單個資料庫中的內部集合 使用多個from字句執行連線 可以包含多個...

Linq查詢操作之投影操作

投影操作,乍一看不知道在說啥。那麼什麼是投影操作呢?其實就是select操作,名字起的怪怪的。和linq查詢表示式中的select操作是一樣的。它能夠選擇資料來源中的元素,並指定元素的表現形式。投影操作包括以下2種操作 1 select操作,將資料來源中的元素投影到新的序列中,並指定元素的型別和表現...

Linq查詢操作之投影操作

投影操作,乍一看不知道在說啥。那麼什麼是投影操作呢?其實就是select操作,名字起的怪怪的。和linq查詢表示式中的select操作是一樣的。它能夠選擇資料來源中的元素,並指定元素的表現形式。投影操作包括以下2種操作 1 select操作,將資料來源中的元素投影到新的序列中,並指定元素的型別和表現...