LINQ 查詢表示式(C 程式設計指南)

2021-07-26 14:48:18 字數 3318 閱讀 1840

語言整合查詢 (linq) 是一組技術的名稱,這些技術建立在將查詢功能直接整合到 c# 語言(以及 visual basic 和可能的任何其他 .net 語言)的基礎上。 借助於 linq,查詢現在已是高階語言構造,就如同類、方法、事件等等。

對於編寫查詢的開發人員來說,linq 最明顯的「語言整合」部分是查詢表示式。 查詢表示式是使用 c# 3.0 中引入的宣告性查詢語法編寫的。 通過使用查詢語法,您甚至可以使用最少的**對資料來源執行複雜的篩選、排序和分組操作。 您使用相同的基本查詢表示式模式來查詢和轉換 sql 資料庫、ado.net 資料集、xml 文件和流以及 .net 集合中的資料。

下面的示例演示了完整的查詢操作。 完整操作包括建立資料來源、定義查詢表示式,以及在 foreach 語句中執行查詢。

class linqqueryexpressions

;// define the query expression.

ienumerable scorequery =

from score in scores

where score > 80

select score;

// execute the query.

foreach (int i in scorequery)}}

// output: 97 92 81

「查詢」是指一組指令,這些指令描述要從乙個或多個給定資料來源檢索的資料以及返回的資料應該使用的格式和組織形式。 查詢不同於它所產生的結果。

通常,源資料會在邏輯上組織為相同種類的元素序列。 sql 資料庫表包含乙個行序列。 與此類似,ado.net datatable 包含乙個 datarow 物件序列。 在 xml 檔案中,有乙個 xml 元素「序列」(不過這些元素按分層形式組織為樹結構)。 記憶體中的集合包含乙個物件序列。

從應用程式的角度來看,原始源資料的具體型別和結構並不重要。 應用程式始終將源資料視為乙個 ienumerable 或 iqueryable 集合。 在 linq to xml 中,源資料顯示為乙個 ienumerable。 在 linq to dataset 中,它是乙個 ienumerable。 在 linq to sql 中,它是您定義用來表示 sql 表中資料的任何自定義物件的 ienumerable 或 iqueryable。

指定此源序列後,查詢可以進行下列三項工作之一:

ienumerable highscoresquery =

from score in scores

where score > 80

orderby score descending

select score;

ienumerable highscoresquery2 =

from score in scores

where score > 80

orderby score descending

select string.format("the score is ", score);

int highscorecount =

(from score in scores

where score > 80

select score)

.count();

ienumerable highscoresquery3 =

from score in scores

where score > 80

select score;

int scorecount = highscoresquery3.count();

在上乙個示例中,查詢是在 count 呼叫中執行的,因為 count 必須迴圈訪問結果以便確定 highscoresquery 返回的元素數量。

「查詢表示式」是用查詢語法表示的查詢, 是一流的語言構造。 它就像任何其他表示式一樣,並且可以用在 c# 表示式有效的任何上下文中。 查詢表示式由一組用類似於 sql 或 xquery 的宣告性語法編寫的子句組成。 每個子句又包含乙個或多個 c# 表示式,而這些表示式本身又可能是查詢表示式或包含查詢表示式。

查詢表示式必須以 from 子句開頭,並且必須以 select 或 group 子句結尾。 在第乙個 from 子句和最後乙個 select 或 group 子句之間,查詢表示式可以包含乙個或多個下列可選子句:where、orderby、join、let 甚至附加的 from 子句。 還可以使用 into 關鍵字使 join 或 group 子句的結果能夠充當同一查詢表示式中附加查詢子句的源。

在 linq 中,查詢變數是任何儲存查詢(而非查詢結果)的變數。更具體地說,查詢變數始終是乙個可列舉的型別,當在 foreach 語句中或在對其 ienumerator.movenext 方法的直接呼叫中迴圈訪問它時,它會生成一串行元素。

下面的**示例演示了乙個簡單的查詢表示式,它含有乙個資料來源、乙個篩選子句和乙個排序子句,但不對源元素進行轉換。 select 子句結束了該查詢。

LINQ 查詢表示式(C 程式設計指南)

語言整合查詢 linq 是一組技術的名稱,這些技術建立在將查詢功能直接整合到 c 語言 以及 visual basic 和可能的任何其他 net 語言 的基礎上。借助於 linq,查詢現在已是高階語言構造,就如同類 方法 事件等等。對於編寫查詢的開發人員來說,linq 最明顯的 語言整合 部分是查詢...

引 LINQ 查詢表示式(C 程式設計指南)

語言整合查詢 linq 是一組技術的名稱,這些技術建立在將查詢功能直接整合到 c 語言 以及 visual basic 和可能的任何其他 net 語言 的基礎上。借助於 linq,查詢現在已是高階語言構造,就如同類 方法 事件等等。對於編寫查詢的開發人員來說,linq 最明顯的 語言整合 部分是查詢...

查詢表示式 LINQ 簡介

在上兩篇我介紹了c 3.0新語特性和改進,這些新特性在我們編寫程式時為我們提供了非常大的幫助。從這篇開始,我們開始一起來 linq。linq是language integrated query的簡稱,它是整合在.net程式語言中的一種特性。已成為程式語言的乙個組成部分,在編寫程式時可以得到很好的編譯...