LINQ查詢數(shù)據(jù)庫(kù)概述
學(xué)習(xí)LINQ查詢時(shí),經(jīng)常會(huì)遇到LINQ查詢數(shù)據(jù)庫(kù)問(wèn)題,這里將介紹LINQ查詢數(shù)據(jù)庫(kù)問(wèn)題的解決方法。
您可以通過(guò)LINQ來(lái)編寫(xiě)針對(duì)各種數(shù)據(jù)源的查詢?cè)L問(wèn)信息。您不必在使用SQL語(yǔ)法,因?yàn)長(zhǎng)INQ提供了c#語(yǔ)言來(lái)處理,并提供了相同的類型及表達(dá)的功能。這是很重要的因?yàn)橄褚粋€(gè) LINQ 提供了一個(gè)聲明性方法允許您編寫(xiě)更面向?qū)ο蟮某绦颉?/P>
可以使用 LINQ編寫(xiě)C# 代碼,列出使用 LINQ查詢數(shù)據(jù)庫(kù),并創(chuàng)建 XML 文檔:
- var contacts
- //從數(shù)據(jù)庫(kù)檢索客戶表
- from customer in db.Customers
- where customer.Name.StartsWith("A") && customer.Orders.Count > 0
- orderby customer.Name
- select new { customer.Name, customer.Phone };
- var xml
- //從客戶列表生成 XML 數(shù)據(jù)
- new XElement("contacts",
- from contact in contacts
- select new XElement("contact",
- new XAttribute("name", contact.Name),
- new XAttribute("phone", contact.Phone)
- )
- );
這段代碼含義是從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)并從中創(chuàng)建一個(gè) XML 文檔寫(xiě)入所需內(nèi)容。使用LINQ您會(huì)感覺(jué)到更容易、更自然。您將很快看到更多 LINQ 查詢,但目前集中在語(yǔ)言方面。與from, where, orderby,和select 關(guān)鍵字在表里,很明顯他們已經(jīng)擴(kuò)展進(jìn)c#的LINQ工具里。
我們剛才所展示的是 C# 代碼,但 LINQ 跨編程語(yǔ)言提供常見(jiàn)查詢體系結(jié)構(gòu)。他工作在 C# 3.0 and VB.NET 9.0 (即 VB 2008),因此需要專用的編譯器,但是,可以其移植到其他.NET 語(yǔ)言。從目前來(lái)看F#已經(jīng)有了LINQ功能,未來(lái)會(huì)有更多.NET語(yǔ)言得到LINQ的支持。
圖中的查詢使用的是在 C#語(yǔ)法而不是在新的語(yǔ)言。LINQ并不是一種新的語(yǔ)言。它被集成到 C# 和 VB.NET。 此外,LINQ 可以用于避免.NET 編程語(yǔ)言與 SQL、 XSL 或其他特定于數(shù)據(jù)的語(yǔ)言想混淆。 LINQ 使查詢通過(guò)多種類型的數(shù)據(jù)存儲(chǔ)到編程語(yǔ)言的語(yǔ)言特定擴(kuò)展集中。您可以把linq視為通用遠(yuǎn)程控制。有時(shí),您 會(huì)使用它來(lái)查詢數(shù)據(jù)庫(kù) ;在其他方面,您也可以查詢 XML 文檔。您只需使用您喜歡的編程語(yǔ)言不必切換到SQL 或 XQuery 等查詢語(yǔ)言。
我們只給您提供簡(jiǎn)略講了LINQ查詢數(shù)據(jù)庫(kù)。此時(shí)***的問(wèn)題是:為什么我們希望使用 LINQ 之類的工具?為什么不使用以前其它的工具呢?LINQ創(chuàng)建在程序語(yǔ)法里,也同存在于關(guān)系數(shù)據(jù)庫(kù)和XML文檔里。
LINQ 來(lái)源于項(xiàng)目是一個(gè)簡(jiǎn)單的事實(shí):在應(yīng)用程序中用來(lái)驅(qū)動(dòng)和與數(shù)據(jù)庫(kù)進(jìn)行連接。因此應(yīng)用程序中只懂一門(mén)c#語(yǔ)言是不能滿族需求的,你還要學(xué)習(xí)另一些語(yǔ)言,例如SQL語(yǔ)法,配合連同 C# 以形成完整應(yīng)用程序的 API。
我們將首先來(lái)看一段使用標(biāo)準(zhǔn)的.NET API 的數(shù)據(jù)訪問(wèn)代碼。我們會(huì)指出,在這種代碼中遇到的常見(jiàn)問(wèn)題。然后,我們將通過(guò)顯示如何這些存在問(wèn)題與其他類型的數(shù)據(jù)如 XML。你將看到LINQ 地址之間數(shù)據(jù)源的一般不匹配和編程語(yǔ)言擴(kuò)展我們的分析。
【編輯推薦】