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

下載本文檔

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

文檔簡介

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

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

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

select:用select子句指定目標數(shù)據(jù)LINQ查詢中,查詢結(jié)果本身則通過select或group子句來定義,其中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)建了一個匿名類Linq查詢用where子句指定篩選條件LINQ中,通過where子句指定對元素進行過濾的條件,where子句的位置在from之后select之前,定義如下:condition表示過濾條件,是任何類型為bool的表達式。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通過表達式過濾條件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后面跟方法過濾表達式Linq查詢用orderby子句實現(xiàn)排序LINQ中,通過orderby子句對查詢結(jié)果進行排序。定義如下:expression是要進行排序的表達式,sortType是可選參數(shù),表示排序類型,包括升序(ascending)和降序(desending)兩個可選值,默認升序。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進行降序排序Linq查詢用group子句實現(xiàn)分組LINQ中,通過group子句對查詢結(jié)果進行分組,定義如下:expression是一個表達式,用于計算產(chǎn)生查詢結(jié)果中是一個表達式,by用于計算產(chǎn)生查詢結(jié)果中的元素,而key同樣是一個表達式,用于計算進行分組的條件。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ù)進行分組Linq查詢用并列from子句實現(xiàn)連接LINQ中,通過并列from子句可以從多個數(shù)據(jù)源中獲取數(shù)據(jù)并進行查詢,它的語法和單個from子句一樣,只是每個from子句的臨時變量名稱不能相同,每個臨時變量表示來自對應(yīng)數(shù)據(jù)源的元素。多個from子句實際上可以看成是多次循環(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);}兩個from子句進行查詢,且from子句中的臨時變量intval1和intval2不能相同Linq查詢First()返回集合中的一個元素,其實質(zhì)就是在SQL語句中加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()返回集合中的一個元素,其實質(zhì)就是在SQL語句中加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()方法返回序列中的第一個元素,如果序列為空,則拋出InvalidOperationException異常。這意味著如果調(diào)用First()方法時序列為空,將會導致運行時異常。FirstOrDefault():

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

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

staticvoidMain(string[]args)

{int[]intAry1={100,12,78,12,78,60};varresultList=(fromintval1inintAry1selectintval1).Distinct();foreach(variteminresultList)System.Console.WriteLine(item);Console.ReadKey(); }去除重復數(shù)據(jù)Linq查詢Count()返回集合中的元素個數(shù),返回INT類型1.簡單形式: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的個數(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,因為numbers序列中存在元素返回true,因為numbers序列中存在偶數(shù)元素2和4返回false,因為emptyList序列為空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,因為numbers序列中的所有元素都大于0返回false,因為numbers序列中存在奇數(shù)元素返回true,因為emptyList序列中沒有元素,相當于所有元素都滿足條件Linq查詢Sum()返回集合中數(shù)值類型元素之和,集合應(yīng)為INT類型集合。1.簡單形式:2.帶條件形式:其他操作符如Max、Min、Average、Last、Skip等不再一一說明,使用形式類似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(); }對集合的元素進行求和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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論