亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        淺析LINQ技術(shù)原理及應(yīng)用

        2014-04-29 00:00:00唐磊

        摘 要:LINQ,語(yǔ)言級(jí)集成查詢(Language Integrated Query),是一種數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),LINQ提供了一條更常的途徑,.Net Framework添加一些可以應(yīng)用于所有信息源的具有多種用途的語(yǔ)法查詢特性,這是比向開(kāi)發(fā)語(yǔ)言和運(yùn)行時(shí)添加一些關(guān)系數(shù)據(jù)特性或者類(lèi)似XML特性更好的方式。

        關(guān)鍵詞:LINQ;查詢;ADO.NET;DataSet;SQL

        中圖分類(lèi)號(hào):TP311.13

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

        1 LINQ的基本語(yǔ)法

        在.NET框架中,LINQ包含在System.Linq命名空間內(nèi),它的基本語(yǔ)法結(jié)構(gòu)為:

        <結(jié)果類(lèi)型> <查詢結(jié)果對(duì)象>=

        from <范圍變量> in <數(shù)據(jù)源>

        [where <布爾表達(dá)式>]

        [orderby <排序關(guān)鍵字>][ascending|descending]

        [group <范圍變量> by <分組關(guān)鍵字> into <分組標(biāo)識(shí)符>]

        [join <范圍變量> in <連接數(shù)據(jù)源> on <連接條件>]

        select <查詢結(jié)果>

        通常<結(jié)果類(lèi)型>使用var關(guān)鍵字讓系統(tǒng)編譯器在編譯時(shí)推斷查詢變量的類(lèi)型,也可以使用查詢變量的顯示類(lèi)型來(lái)指定查詢結(jié)果類(lèi)型。

        from子句用于指定“范圍變量”及“數(shù)據(jù)源”,“范圍變量”用于每個(gè)數(shù)據(jù)源對(duì)象的引用,數(shù)據(jù)源可以是各種內(nèi)存數(shù)據(jù)。

        where子句用于查詢結(jié)果的篩選。

        orderby子句用于查詢結(jié)果排序。

        groupby子句用于查詢結(jié)果的分組,查詢結(jié)果的每個(gè)元素是一個(gè)具有鍵值對(duì)象及根據(jù)該鍵分組的元素列表的對(duì)象。在循環(huán)訪問(wèn)生成組序列的查詢時(shí),必須使用嵌套的循環(huán),外部循環(huán)用于循環(huán)訪問(wèn)每個(gè)組,內(nèi)部循環(huán)用于訪問(wèn)每個(gè)組所對(duì)應(yīng)的元素列表的對(duì)象。

        joinon子句用于將指定的鍵來(lái)做關(guān)聯(lián)操作。

        select子句用于從容器中選擇一個(gè)序列。

        2 LINQ查詢

        LINQ查詢通過(guò)提供一種跨各種數(shù)據(jù)源和數(shù)據(jù)格式使用數(shù)據(jù)的一致模型,簡(jiǎn)化了查詢過(guò)程。LINQ查詢分為對(duì)內(nèi)存對(duì)象的查詢(LINQ to Object)、對(duì)SQL Server數(shù)據(jù)庫(kù)的查詢(LINQ to SQL)、對(duì)ADO.NET DataSet的查詢(LINQ to DataSet)、對(duì)XML數(shù)據(jù)的查詢(LINQ to XML)以及對(duì)由ADO.NET實(shí)體框架創(chuàng)建的實(shí)體集進(jìn)行查詢(LINQ to Entities)。

        2.1 LINQ to Object。LINQ to Object直接對(duì)任意IEnumerable或IEnumerable集合使用LINQ查詢,無(wú)須使用中間LINQ提供程序或API??梢允褂肔INQ查詢?nèi)魏慰擅杜e的集合,如List、Array或Dictionary(TKey,TValue)。

        2.2 LINQ to SQL。在LINQ to SQL中,關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)模型映射到開(kāi)發(fā)人員所用的編程語(yǔ)言表示的對(duì)象模型。當(dāng)應(yīng)用程序運(yùn)行時(shí),LINQ to SQL會(huì)將對(duì)象模型中的語(yǔ)言集成查詢轉(zhuǎn)換為SQL。然后將它們發(fā)送到數(shù)據(jù)庫(kù)進(jìn)行執(zhí)行。當(dāng)數(shù)據(jù)庫(kù)返回結(jié)果時(shí),LINQ to SQL會(huì)將它們轉(zhuǎn)換回開(kāi)發(fā)人員所用的編程語(yǔ)言處理的對(duì)象。

        2.3 LINQ to DataSet。使用LINQ to DataSet時(shí),使用本質(zhì)上和查詢對(duì)象集合相同的語(yǔ)法。畢竟,DataSet其實(shí)只是一組DataTable實(shí)例,而DataTable是一組DataRow對(duì)象。但是,對(duì)DataSet有一個(gè)明顯的限制—它沒(méi)有顯示強(qiáng)類(lèi)型數(shù)據(jù)。相反,要使用Field擴(kuò)展方法把字段值強(qiáng)制轉(zhuǎn)換為適當(dāng)?shù)念?lèi)型。Field由System.Data命名空間中的DataRowExtensions類(lèi)提供,它擴(kuò)展所有DataRow對(duì)象,并能夠以強(qiáng)類(lèi)型的方式訪問(wèn)字段。

        2.4 LINQ to XML。LINQ to XML是一種啟用了LINQ的內(nèi)存XML編程接口,可以在.NET Framework編程語(yǔ)言中處理XML。它將XML文檔置于內(nèi)存中,這一點(diǎn)很像文檔對(duì)象模型(DOM)??梢圆樵兒托薷腦ML文檔。但是,LINQ to XML與DOM不同:它提供一種使用方便,更輕量的對(duì)象模型。

        2.5 LINQ to Entities。LINQ to Entities是Entity Framework的一部分并且取代LINQ to SQL作為在數(shù)據(jù)庫(kù)上使用LINQ的標(biāo)準(zhǔn)機(jī)制。Entity Framework是行業(yè)領(lǐng)先的對(duì)象—關(guān)系映射(ORM)系統(tǒng),可以和多種數(shù)據(jù)庫(kù)一起使用,并支持各種靈活、復(fù)雜的數(shù)據(jù)模型。LINQ to Entities作為Entity Framework的一部分,它可以使用Entity Framework數(shù)據(jù)模型來(lái)執(zhí)行LINQ查詢。

        3 LINQ應(yīng)用實(shí)例

        下面以實(shí)例—城市Bothell街道信息查詢說(shuō)明LINQ查詢的應(yīng)用,部分程序代碼如下:

        DataContextClassesDataContext db = new DataContextClassesDataContext();

        Table

        Addresses = db.GetTable
        ();

        db.Log = Console.Out;

        IQueryable

        addrQuery =

        from addr in Addresses

        where addr.City == \"Bothell\"

        select addr;

        foreach (Address addr in addrQuery)

        {

        Console.WriteLine(\"AddressID={0},AddressLine={1}\",addr.AddressID,addr.AddressLine1);

        }

        在代碼中,變量Addresses則為System.Data.Linq命名空間中的Table類(lèi)對(duì)象,相當(dāng)于數(shù)據(jù)庫(kù)中的數(shù)據(jù)表,變量addrQuery則是查詢結(jié)果集,addr.City則是查詢條件。

        4 結(jié)束語(yǔ)

        綜上所述,使用LINQ數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),可以直接通過(guò)編程語(yǔ)言查詢和操作內(nèi)存數(shù)據(jù)、關(guān)系數(shù)據(jù)、XML文檔和實(shí)體數(shù)據(jù),使得對(duì)數(shù)據(jù)的查詢和操作更簡(jiǎn)便。使用LINQ技術(shù)無(wú)需使用復(fù)雜的編程技巧就可合并數(shù)據(jù)源,讓開(kāi)發(fā)者的開(kāi)發(fā)效率更大地提高。

        參考文獻(xiàn):

        [1]田江.淺談LINQ訪問(wèn)技術(shù)[J].科教文匯,2009(21):275.

        [2]韓雙旺.淺談LINQ數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)研究[J].自動(dòng)化與儀器儀表,2011(04):13.

        [3]馬鵬烜.基于LINQ to Entity數(shù)據(jù)訪問(wèn)技術(shù)的應(yīng)用研究[J].現(xiàn)代計(jì)算機(jī),2011,7(05):11.

        [4](美)謝菲爾德(Shepherd,G.)著,張大威譯.ASP.NET 4從入門(mén)到精通[M].北京:清華大學(xué)出版社,2011.

        [5](美)麥克唐納(MacDonald,M.),(美)弗里曼(Freeman,A.),(美)茲普茲塔(Szpuszta,M.)著.博思工作室譯.ASP.NET 4高級(jí)程序設(shè)計(jì)(第4版)[M].北京:人民郵電出版社,2011.

        [6](美)特羅爾森(Troelsen,A.)著,朱曄等譯.C#與.NET 4高級(jí)程序設(shè)計(jì)(第5版)[M].北京:人民郵電出版社,2011.

        作者簡(jiǎn)介:唐磊(1983-),男,重慶萬(wàn)州人,現(xiàn)就職于現(xiàn)代教育技術(shù)中心,助教,主要研究方向:計(jì)算機(jī)網(wǎng)絡(luò)及軟件開(kāi)發(fā)。

        作者單位:重慶三峽職業(yè)學(xué)院,重慶 404155

        国产精品亚洲一区二区极品| 亚洲精品乱码久久久久久 | 亚洲国产一区二区中文字幕| 在厨房被c到高潮a毛片奶水| 亚洲国产精品久久人人爱| 熟妇与小伙子matur老熟妇e| 国产哟交泬泬视频在线播放| 无码久久精品蜜桃| 午夜一区二区三区在线观看| av中文字幕一区不卡| 日韩亚洲欧美中文在线| 999久久久免费精品国产| 国产精品麻豆A啊在线观看| 黄色三级一区二区三区| 亚洲一区二区三区视频免费看| 亚洲精品国产第一区二区| 成人午夜福利视频后入| 桃花色综合影院| 久草视频这里有精品| 国产日韩三级| 高清少妇二区三区视频在线观看| 亚洲精品宾馆在线精品酒店| 高清偷自拍第1页| 四虎永久在线精品免费观看地址| 久久久亚洲日本精品一区 | 中文字幕一区二区人妻性色| 综合久久给合久久狠狠狠97色| 色伊人国产高清在线| 久久精品国产亚洲av日韩精品| 中文字幕人妻日韩精品| 国产欧美日韩va另类在线播放| 国产av综合影院| 亚洲另类激情综合偷自拍图| 99亚洲女人私处高清视频| 无码h黄肉3d动漫在线观看| 韩国v欧美v亚洲v日本v| 91久久福利国产成人精品| 精品国产一区二区三区毛片| 久久亚洲春色中文字幕久久| 亚洲成av人影院| 國产一二三内射在线看片|