查詢(xún)表達(dá)式(LINQ)簡(jiǎn)介

作者:李永京  來(lái)源:博客園  時(shí)間:2008-09-23  閱讀:5063 次  原文鏈接   [收藏]  
摘要:語(yǔ)言集成查詢(xún) (LINQ) 是 Visual Studio 2008 和 .NET Framework 3.5 版中一項(xiàng)突破性的創(chuàng)新,它在對(duì)象領(lǐng)域和數(shù)據(jù)領(lǐng)域之間架起了一座橋梁。
[1] LINQ簡(jiǎn)介
[2] LINQ to SQL實(shí)例

查詢(xún)表達(dá)式(LINQ)簡(jiǎn)介

LINQ是Language Integrated Query的簡(jiǎn)稱(chēng),它是集成在.NET編程語(yǔ)言中的一種特性。已成為編程語(yǔ)言的一個(gè)組成部分,在編寫(xiě)程序時(shí)可以得到很好的編譯時(shí)語(yǔ)法檢查,豐富的元數(shù)據(jù),智能感知、靜態(tài)類(lèi)型等強(qiáng)類(lèi)型語(yǔ)言的好處。并且它同時(shí)還使得查詢(xún)可以方便地對(duì)內(nèi)存中的信息進(jìn)行查詢(xún)而不僅僅只是外部數(shù)據(jù)源。

LINQ定義了一組標(biāo)準(zhǔn)查詢(xún)操作符用于在所有基于.NET平臺(tái)的編程語(yǔ)言中更加直接地聲明跨越、過(guò)濾和投射操作的統(tǒng)一方式,標(biāo)準(zhǔn)查詢(xún)操作符允許查詢(xún)作用于所有基于IEnumerable<T>接口的源,并且它還允許適合于目標(biāo)域或技術(shù)的第三方特定域操作符來(lái)擴(kuò)大標(biāo)準(zhǔn)查詢(xún)操作符集,更重要的是,第三方操作符可以用它們自己的提供附加服務(wù)的實(shí)現(xiàn)來(lái)自由地替換標(biāo)準(zhǔn)查詢(xún)操作符,根據(jù)LINQ模式的習(xí)俗,這些查詢(xún)喜歡采用與標(biāo)準(zhǔn)查詢(xún)操作符相同的語(yǔ)言集成和工具支持。

我們來(lái)總體看看LINQ架構(gòu)

LINQ架構(gòu)

在.NET3.5下,微軟為我們提供了一些命名空間

命名空間

LINQ包括五個(gè)部分:LINQ to Objects、LINQ to DataSets、LINQ to SQL、LINQ to Entities、LINQ to XML。

LINQ to SQL全稱(chēng)基于關(guān)系數(shù)據(jù)的.NET語(yǔ)言集成查詢(xún),用于以對(duì)象形式管理關(guān)系數(shù)據(jù),并提供了豐富的查詢(xún)功能。其建立于公共語(yǔ)言類(lèi)型系統(tǒng)中的基于SQL的模式定義的集成之上,當(dāng)保持關(guān)系型模型表達(dá)能力和對(duì)底層存儲(chǔ)的直接查詢(xún)?cè)u(píng)測(cè)的性能時(shí),這個(gè)集成在關(guān)系型數(shù)據(jù)之上提供強(qiáng)類(lèi)型。

LINQ to XML在System.Xml.LINQ命名空間下實(shí)現(xiàn)對(duì)XML的操作。采用高效、易用、內(nèi)存中的XML工具在宿主編程語(yǔ)言中提供XPath/XQuery功能等。

說(shuō)了這么多,我們還是用一個(gè)簡(jiǎn)單的實(shí)例說(shuō)明一下微軟LINQ to SQL框架為我們帶來(lái)的體驗(yàn)。

LINQ to SQL實(shí)例

第一步:建立dbml(Database Mark Language。數(shù)據(jù)庫(kù)描述語(yǔ)言,是一種xml格式的文檔,用來(lái)描述數(shù)據(jù)庫(kù))文件,以Northwind數(shù)據(jù)庫(kù)為例,上述Customers類(lèi)被映射成一個(gè)表,對(duì)應(yīng)數(shù)據(jù)庫(kù)中的 Customers表

第一步:建立dbml文件

第二步:創(chuàng)建一個(gè)ASP.NET頁(yè)面,在頁(yè)面上加入一個(gè)GridView控件

第二步:在頁(yè)面上拖一個(gè)GridView控件用于顯示

第三步:編寫(xiě)代碼進(jìn)行數(shù)據(jù)綁定

第三步:編寫(xiě)后臺(tái)綁定代碼

第四步:運(yùn)行顯示結(jié)果。

第四步:顯示

好了,就說(shuō)這么多吧,大家應(yīng)該對(duì)LINQ有了總體的了解。最后我對(duì)LINQ還有一點(diǎn)疑惑,在此提出,請(qǐng)熟悉的朋友來(lái)探討:

  1. LINQ是在ADO.NET之上的,那么在將來(lái)它會(huì)代替ADO.NET嗎?
  2. 在大型項(xiàng)目中使用LINQ,它的效率如何呢?