MES開發(fā)與應(yīng)用 課件 1.1.12 工業(yè)管理軟件系統(tǒng)技術(shù)棧介紹-Linq常用語(yǔ)法_第1頁(yè)
MES開發(fā)與應(yīng)用 課件 1.1.12 工業(yè)管理軟件系統(tǒng)技術(shù)棧介紹-Linq常用語(yǔ)法_第2頁(yè)
MES開發(fā)與應(yīng)用 課件 1.1.12 工業(yè)管理軟件系統(tǒng)技術(shù)棧介紹-Linq常用語(yǔ)法_第3頁(yè)
MES開發(fā)與應(yīng)用 課件 1.1.12 工業(yè)管理軟件系統(tǒng)技術(shù)棧介紹-Linq常用語(yǔ)法_第4頁(yè)
MES開發(fā)與應(yīng)用 課件 1.1.12 工業(yè)管理軟件系統(tǒng)技術(shù)棧介紹-Linq常用語(yǔ)法_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

——Linq常用語(yǔ)法1.1系統(tǒng)技術(shù)棧介紹Linq分類Linq查詢方法語(yǔ)句和查詢語(yǔ)句什么是Linq知識(shí)回顧認(rèn)識(shí)數(shù)據(jù)庫(kù)ADO.NET常用類下載并安裝SQLServer數(shù)據(jù)庫(kù)創(chuàng)建SQLServer數(shù)據(jù)庫(kù)創(chuàng)建SQLServer數(shù)據(jù)表使用ADO.NET訪問數(shù)據(jù)庫(kù)學(xué)習(xí)目標(biāo)通過本節(jié)學(xué)習(xí)可以:重點(diǎn)學(xué)習(xí)Linq查詢掌握Linq分類掌握方法語(yǔ)句和查詢語(yǔ)句了解什么是Linq01什么是Linq什么是LinqLINQ(LanguageIntegratedQuery)是一種在.NET平臺(tái)上進(jìn)行數(shù)據(jù)查詢和操作的技術(shù)。它是一種將查詢語(yǔ)句集成到編程語(yǔ)言中的方法,使得開發(fā)人員可以使用統(tǒng)一的語(yǔ)法來(lái)查詢和操作各種數(shù)據(jù)源,如集合、數(shù)據(jù)庫(kù)、XML等。LINQ提供了一種統(tǒng)一的查詢語(yǔ)法,類似于SQL語(yǔ)句,使得查詢代碼更加直觀易懂。通過LINQ,開發(fā)人員可以使用類似于SQL的查詢語(yǔ)句來(lái)對(duì)數(shù)據(jù)進(jìn)行篩選、排序、分組、連接等操作,而無(wú)需手動(dòng)編寫循環(huán)和條件判斷的代碼。什么是LinqLinq的優(yōu)勢(shì)統(tǒng)一的查詢語(yǔ)法:Linq提供了統(tǒng)一的查詢語(yǔ)法,使得查詢操作變得更加簡(jiǎn)潔和易于理解;強(qiáng)類型檢查:LINQ是基于.NET編程語(yǔ)言的,利用編譯時(shí)的強(qiáng)類型檢查機(jī)制,可以在編譯時(shí)發(fā)現(xiàn)類型錯(cuò)誤和語(yǔ)法錯(cuò)誤,從而提供更好的代碼可靠性和調(diào)試體驗(yàn)。強(qiáng)大的查詢能力:LINQ提供了豐富的查詢操作,可以對(duì)數(shù)據(jù)進(jìn)行多種方式的篩選、排序、分組、連接等操作,滿足不同的查詢需求。惰性查詢執(zhí)行:LINQ使用延遲加載的方式執(zhí)行查詢操作,即只有在真正需要結(jié)果時(shí)才執(zhí)行查詢。Lambda表達(dá)式:LINQ使用Lambda表達(dá)式來(lái)定義查詢條件和操作,Lambda表達(dá)式提供了一種更簡(jiǎn)潔和靈活的方式來(lái)編寫查詢代碼。Linq的優(yōu)勢(shì)02Linq分類思考題 Linq包括哪些分類?Linq的分類LINQ包括五個(gè)部分:LINQtoObjects、LINQtoSQL、LINQtoDataSets、LINQtoEntities、LINQtoXML。LINQtoObject用于對(duì)內(nèi)存中的對(duì)象集合進(jìn)行查詢和操作。它是LINQ的基礎(chǔ)部分,支持對(duì)各種.NET集合(如List、Array、Dictionary等)進(jìn)行查詢,包括篩選、排序、投影、分組等操作。LINQtoSQL用于與關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行交互。它提供了一種將數(shù)據(jù)庫(kù)表映射為.NET對(duì)象的方式,使得開發(fā)人員可以使用LINQ查詢語(yǔ)法對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢和操作。LINQtoSQL使用了ORM(對(duì)象關(guān)系映射)的思想,將數(shù)據(jù)庫(kù)中的表和行轉(zhuǎn)化為.NET中的類和對(duì)象。Linq的分類Linq的分類LINQtoDataSet用于對(duì).NET中的DataSet和DataTable進(jìn)行查詢和操作。DataSet是.NET中的一種內(nèi)存中的數(shù)據(jù)容器,用于存儲(chǔ)和操作數(shù)據(jù)。LINQtoDataSet提供了一種使用LINQ查詢語(yǔ)法對(duì)DataSet和DataTable進(jìn)行查詢、排序、篩選等操作的方式。LINQtoEntities是EntityFramework提供的一種LINQ提供者,用于與數(shù)據(jù)庫(kù)進(jìn)行交互。它支持對(duì)關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行查詢和操作,類似于LINQtoSQL,但更加靈活和強(qiáng)大。LINQtoEntities可以處理復(fù)雜的查詢需求,支持更多的數(shù)據(jù)庫(kù)提供者和功能。LINQtoXML用于對(duì)XML文檔進(jìn)行查詢和操作。它提供了一種方便的方式來(lái)處理XML數(shù)據(jù),包括創(chuàng)建、修改、查詢和轉(zhuǎn)換XML文檔。LINQtoXML使用LINQ查詢語(yǔ)法來(lái)操作XML數(shù)據(jù),使得XML處理變得簡(jiǎn)單而直觀。Linq的分類03Linq查詢思考題 Linq查詢的子句包括哪些?Linq查詢LINQ查詢的根本目的是從指定的數(shù)據(jù)源中查詢滿足符合特定條件的元素,并且根據(jù)需要對(duì)這些查詢到的元素進(jìn)行排序、連接等操作。LINQ查詢包括四個(gè)主要元素:1、數(shù)據(jù)源:表示LINQ查詢將從哪里查找數(shù)據(jù),它通常是一個(gè)或多個(gè)數(shù)據(jù)集,每個(gè)數(shù)據(jù)集包含一系列的元素。2、目標(biāo)數(shù)據(jù):用來(lái)指定查詢具體想要的是什么數(shù)據(jù),在LNQ中,它定義了查詢結(jié)果數(shù)據(jù)集中元素的具體類型。3、篩選條件:定義了對(duì)數(shù)據(jù)源中元素的過濾條件,只有滿足條件的元素才作為查詢結(jié)果返回。篩選條件可以是簡(jiǎn)單的邏輯表達(dá)式,也可以是復(fù)雜的邏輯函數(shù)。4、附加操作:表示一些其他的對(duì)查詢結(jié)果的輔助操作,比如,對(duì)查詢結(jié)果進(jìn)行排序,分組等。

數(shù)據(jù)源和目標(biāo)數(shù)據(jù)是LINQ查詢的必備元素,篩選條件和附加操作是可選元素。注意:LINQ查詢代碼中關(guān)鍵字必須小寫。Linq查詢Linq查詢from:用from子句指定數(shù)據(jù)源

LINQ查詢中,通常以from子句開始,from子句指定查詢將采用的數(shù)據(jù)源,同時(shí)定義一個(gè)本地變量,表示數(shù)據(jù)源中單個(gè)元素,整個(gè)LINQ查詢都是對(duì)該元素進(jìn)行查詢,單個(gè)from子句的編寫格式如下:

select:用select子句指定目標(biāo)數(shù)據(jù)LINQ查詢中,查詢結(jié)果本身則通過select或group子句來(lái)定義,其中select子句最常用,它指定的查詢結(jié)果為一維的查詢結(jié)果。select子句的定義如下:from、selectfromlocalVarindataSource

fromlocalVarindataSourceselectexpressionLinq查詢selectstaticvoidMain(string[]args){

int[]intAry={78,19,100,12,23,60};varresultList=fromintvalinintAry

selectintval;foreach(variteminresultList)

{System.Console.WriteLine(item);

}Console.ReadKey(); }Linq查詢select創(chuàng)建匿名類型selectstaticvoidMain(string[]args){int[]intAry={78,19,100,12,23,60};varresultList=fromintvalinintAryselectnew{intValue=intval, doubleValue=intval*2};foreach(variteminresultList)System.Console.WriteLine(item);

Console.ReadKey();}通過new創(chuàng)建了一個(gè)匿名類Linq查詢用where子句指定篩選條件LINQ中,通過where子句指定對(duì)元素進(jìn)行過濾的條件,where子句的位置在from之后select之前,定義如下:condition表示過濾條件,是任何類型為bool的表達(dá)式。where

fromlocalVarindataSourcewhereconditionselectexpressionLinq查詢where staticvoidMain(string[]args){int[]intAry={78,19,100,12,23,60};varresultList=fromintvalinintAry

whereintval>50&&intval<90selectintval;

foreach(variteminresultList)System.Console.WriteLine(item);

Console.ReadKey();}Where通過表達(dá)式過濾條件Linq查詢wherestaticvoidMain(string[]args){int[]intAry={78,19,100,12,23,60};varresultList=fromintvalinintAry

whereIsScope(intval)selectintval;foreach(variteminresultList)System.Console.WriteLine(item);}privatestaticboolIsScope(inttemp){if(temp>50&&temp<90){returntrue;}returnfalse;}Where后面跟方法過濾表達(dá)式Linq查詢用orderby子句實(shí)現(xiàn)排序LINQ中,通過orderby子句對(duì)查詢結(jié)果進(jìn)行排序。定義如下:expression是要進(jìn)行排序的表達(dá)式,sortType是可選參數(shù),表示排序類型,包括升序(ascending)和降序(desending)兩個(gè)可選值,默認(rèn)升序。orderbyorderbyexpression[sortType]Linq查詢orderbystaticvoidMain(string[]args){int[]intAry={78,19,100,12,23,60};varresultList=fromintvalinintAry

orderbyintvaldescendingselectintval; foreach(variteminresultList) System.Console.WriteLine(item); Console.ReadKey();}通過orderby進(jìn)行降序排序Linq查詢用group子句實(shí)現(xiàn)分組LINQ中,通過group子句對(duì)查詢結(jié)果進(jìn)行分組,定義如下:expression是一個(gè)表達(dá)式,用于計(jì)算產(chǎn)生查詢結(jié)果中是一個(gè)表達(dá)式,by用于計(jì)算產(chǎn)生查詢結(jié)果中的元素,而key同樣是一個(gè)表達(dá)式,用于計(jì)算進(jìn)行分組的條件。groupgroupexpressionbykeyLinq查詢groupstaticvoidMain(string[]args){int[]intAry={100,19,78,12,23,60};varresultList=fromintvalinintAry

groupintvalbyintval%3;

foreach(vargrpinresultList) {System.Console.Write("key={0}:",grp.Key);foreach(varitemingrp)System.Console.Write("{0},",item);System.Console.WriteLine(); }}根據(jù)3的余數(shù)進(jìn)行分組Linq查詢用并列from子句實(shí)現(xiàn)連接LINQ中,通過并列from子句可以從多個(gè)數(shù)據(jù)源中獲取數(shù)據(jù)并進(jìn)行查詢,它的語(yǔ)法和單個(gè)from子句一樣,只是每個(gè)from子句的臨時(shí)變量名稱不能相同,每個(gè)臨時(shí)變量表示來(lái)自對(duì)應(yīng)數(shù)據(jù)源的元素。多個(gè)from子句實(shí)際上可以看成是多次循環(huán)。fromLinq查詢fromstaticvoidMain(string[]args){int[]intAry1={100,19,78,12,23,60};int[]intAry2={2,1,3};varresultList=

fromintval1inintAry1fromintval2inintAry2selectnew{tmp1=intval1,tem2=intval2,sum=intval1+intval2};

foreach(variteminresultList) System.Console.WriteLine(item);}兩個(gè)from子句進(jìn)行查詢,且from子句中的臨時(shí)變量intval1和intval2不能相同Linq查詢First()返回集合中的一個(gè)元素,其實(shí)質(zhì)就是在SQL語(yǔ)句中加TOP(1)。First()staticvoidMain(string[]args)

{int[]intAry={78,19,100,12,23,60};varresultList=(fromintvalinintAryselectintval).First();System.Console.WriteLine(resultList);Console.ReadKey(); }返回查詢結(jié)果的第一筆數(shù)據(jù)Linq查詢FirstOrDefault()返回集合中的一個(gè)元素,其實(shí)質(zhì)就是在SQL語(yǔ)句中加TOP(1)。FirstOrDefault()staticvoidMain(string[]args)

{int[]intAry={78,19,100,12,23,60};varresultList=(fromintvalinintAryselectintval).FirstOrDefault();System.Console.WriteLine(resultList);Console.ReadKey(); }返回查詢結(jié)果的第一筆數(shù)據(jù)Linq查詢First()與FirstOrDefault()的區(qū)別:First():

First()方法返回序列中的第一個(gè)元素,如果序列為空,則拋出InvalidOperationException異常。這意味著如果調(diào)用First()方法時(shí)序列為空,將會(huì)導(dǎo)致運(yùn)行時(shí)異常。FirstOrDefault():

FirstOrDefault()方法返回序列中的第一個(gè)元素,如果序列為空,則返回默認(rèn)值。默認(rèn)值的類型取決于序列元素的類型,例如,如果元素是引用類型,則返回null,如果元素是值類型,則返回對(duì)應(yīng)類型的默認(rèn)值(如0、false等)

。First()與FirstOrDefault()的區(qū)別Linq查詢Distinct()篩選字段中不相同的值。用于查詢不重復(fù)的結(jié)果集。Distinct()

staticvoidMain(string[]args)

{int[]intAry1={100,12,78,12,78,60};varresultList=(fromintval1inintAry1selectintval1).Distinct();foreach(variteminresultList)System.Console.WriteLine(item);Console.ReadKey(); }去除重復(fù)數(shù)據(jù)Linq查詢Count()返回集合中的元素個(gè)數(shù),返回INT類型1.簡(jiǎn)單形式:2.帶條件形式:Countvarcount=(fromintvalinuserListselectintval).Count();varcount=(fromintvalinuserListselectintval).Count(p=>p.Age>22);Linq查詢Count()

staticvoidMain(string[]args)

{int[]intAry1={100,12,78,12,78,60};varcount=(fromintval1inintAry1selectintval1).Count(p=>p>12); System.Console.WriteLine(count);Console.ReadKey(); }求集合中元素大于12的個(gè)數(shù)Linq查詢Any()

用于檢查序列中是否存在滿足指定條件的元素。anyList<int>numbers=newList<int>{1,2,3,4,5};boolhasElements=numbers.Any();boolhasEvenNumbers=numbers.Any(num=>num%2==0);

List<int>emptyList=newList<int>();boolhasElements2=emptyList.Any();返回true,因?yàn)閚umbers序列中存在元素返回true,因?yàn)閚umbers序列中存在偶數(shù)元素2和4返回false,因?yàn)閑mptyList序列為空Linq查詢All()

用于檢查序列中的所有元素是否都滿足指定條件。allList<int>numbers=newList<int>{1,2,3,4,5};boolallPositive=numbers.All(num=>num>0);boolallEven=numbers.All(num=>num%2==0);List<int>emptyList=newList<int>();boolallPositive2=emptyList.All(num=>num>0);返回true,因?yàn)閚umbers序列中的所有元素都大于0返回false,因?yàn)閚umbers序列中存在奇數(shù)元素返回true,因?yàn)閑mptyList序列中沒有元素,相當(dāng)于所有元素都滿足條件Linq查詢Sum()返回集合中數(shù)值類型元素之和,集合應(yīng)為INT類型集合。1.簡(jiǎn)單形式:2.帶條件形式:其他操作符如Max、Min、Average、Last、Skip等不再一一說(shuō)明,使用形式類似Sum()。Sumvarsum=(fromintvalinuserListselectintval.Age).Sum();varsum=(fromintvalinuserListselectintval).Sum(p=>p.Age);Linq查詢Sum

staticvoidMain(string[]args)

{ int[]intAry1={100,12,78,12,78,60};varresultCount=(fromintval1inintAry1selectintval1).Sum();System.Console.WriteLine(resultCount); Console.ReadKey(); }對(duì)集合的元素進(jìn)行求和Linq查詢Sum

staticvoidMain(string[]args)

{ int[]intAry1={100,12,78,12,78,60};intresultCount1=(fromintval1inintAry1selectnew

{Age=intval1,Age1=intval1*2}).Sum(p=>p.Age1);Console.WriteLine(resultC

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論