查詢表達(dá)式(LINQ)簡介

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

查詢表達(dá)式(LINQ)簡介

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

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

我們來總體看看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全稱基于關(guān)系數(shù)據(jù)的.NET語言集成查詢,用于以對象形式管理關(guān)系數(shù)據(jù),并提供了豐富的查詢功能。其建立于公共語言類型系統(tǒng)中的基于SQL的模式定義的集成之上,當(dāng)保持關(guān)系型模型表達(dá)能力和對底層存儲(chǔ)的直接查詢評測的性能時(shí),這個(gè)集成在關(guān)系型數(shù)據(jù)之上提供強(qiáng)類型。

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

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

LINQ to SQL實(shí)例

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

第一步:建立dbml文件

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

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

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

第三步:編寫后臺綁定代碼

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

第四步:顯示

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

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