查詢(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)

在.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)。