Linq查詢簡介

2021-09-08 17:31:57 字數 2286 閱讀 9749

查詢是一種從資料來源檢索資料的表示式。 查詢通常用專門的查詢語言來表示。 隨著時間的推移,人們已經為各種資料來源開發了不同的語言;例如,用於關聯式資料庫的 sql 和用於 xml 的 xquery。 因此,開發人員不得不針對他們必須支援的每種資料來源或資料格式而學習新的查詢語言。 linq 通過提供一種跨各種資料來源和資料格式使用資料的一致模型,簡化了這一情況。 在 linq 查詢中,始終會用到物件。 可以使用相同的基本編碼模式來查詢和轉換 xml 文件、sql 資料庫、ado.net 資料集、.net 集合中的資料以及對其有 linq 提供程式可用的任何其他格式的資料。

查詢操作的三個部分

所有 linq 查詢操作都由以下三個不同的操作組成:

獲取資料源。

建立查詢。

執行查詢。

1

using

system;

2using

system.collections.generic;

3using

system.linq;

4using

system.text;

5using

system.threading.tasks;67

namespace

linq8;

1617

//2.建立查詢

18var myquery = from s in

myint

19where (s % 2) == 0

20select

s; 21

//3.執行查詢

22foreach (var item in

myquery)23"

,item);25}

2627

console.readkey();

282930}

31}32 }

view code

下圖顯示了完整的查詢操作。 在 linq 中,查詢的執行與查詢本身截然不同;換句話說,如果只是建立查詢變數,則不會檢索任何資料。

資料來源在上乙個示例中,由於資料來源是陣列,因此它隱式支援泛型 ienumerable 介面。 這一事實意味著該資料來源可以用 linq 進行查詢。 查詢在 foreach 語句中執行,因此,foreach 需要 ienumerable 或 ienumerable。 支援 ienumerable 或派生介面(如汎型 iqueryable)的型別稱為可查詢型別。

可查詢型別不需要進行修改或特殊處理就可以用作 linq 資料來源。 如果源資料還沒有作為可查詢型別出現在記憶體中,則 linq 提供程式必須以此方式表示源資料。 例如,linq to xml 將 xml 文件載入到可查詢的 xelement 型別中:

1

//create a data source from an xml document. 2//

using system.xml.linq;

3 xelement contacts = xelement.load(@"

c:\mycontactlist.xml

");

在 linq to sql 中,首先手動或使用 物件關係設計器(o/r 設計器) 在設計時建立物件關係對映。 針對這些物件編寫查詢,然後由 linq to sql 在執行時處理與資料庫的通訊。 在下面的示例中,customers 表示資料庫中的特定表,並且查詢結果的型別 iqueryable 派生自 ienumerable。

1 northwnd db = new northwnd(@"

c:\northwnd.mdf");

23//query for customers in london.

4 iqueryablecustquery =

5from cust in

db.customers

6where cust.city == "

london"7

select cust;

上乙個示例中的查詢從整數陣列中返回所有偶數。 該查詢表示式包含三個子句:from、where 和 select。(如果您熟悉 sql,您會注意到這些子句的順序與 sql 中的順序相反。)from 子句指定資料來源,where 子句應用篩選器,select 子句指定返回的元素的型別。 linq 查詢表示式(c# 程式設計指南) 一節中詳細討論了這些子句和其他查詢子句。目前需要注意的是,在 linq 中,查詢變數本身不執行任何操作並且不返回任何資料。 它只是儲存在以後某個時刻執行查詢時為生成結果而必需的資訊。 有關在幕後是如何構建查詢的更多資訊,請參見標準查詢運算子概述。

查詢表示式 LINQ 簡介

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

查詢表示式 LINQ 簡介

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

查詢表示式 LINQ 簡介

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