日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
學(xué)習(xí)Linq經(jīng)驗(yàn)總結(jié)

Linq有很多值得學(xué)習(xí)的地方,這里我們主要介紹學(xué)習(xí)Linq,包括介紹Linq目標(biāo)是實(shí)現(xiàn)語(yǔ)言與數(shù)據(jù)的深度結(jié)合等方面。

成都創(chuàng)新互聯(lián)秉承實(shí)現(xiàn)全網(wǎng)價(jià)值營(yíng)銷(xiāo)的理念,以專業(yè)定制企業(yè)官網(wǎng),成都網(wǎng)站建設(shè)、網(wǎng)站制作,小程序設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì)制作,手機(jī)網(wǎng)站制作,營(yíng)銷(xiāo)型網(wǎng)站建設(shè)幫助傳統(tǒng)企業(yè)實(shí)現(xiàn)“互聯(lián)網(wǎng)+”轉(zhuǎn)型升級(jí)專業(yè)定制企業(yè)官網(wǎng),公司注重人才、技術(shù)和管理,匯聚了一批優(yōu)秀的互聯(lián)網(wǎng)技術(shù)人才,對(duì)客戶都以感恩的心態(tài)奉獻(xiàn)自己的專業(yè)和所長(zhǎng)。

上一個(gè)系列講了C#3.0的新特性,為學(xué)習(xí)Linq做好了鋪墊;接下來(lái)的一段時(shí)間轉(zhuǎn)入學(xué)習(xí)Linq,上述新特性也會(huì)在介紹的過(guò)程中提及到。

學(xué)習(xí)Linq

在我們的軟件中,數(shù)據(jù)的重要性不可言喻,特別是象ERP,CRM等等這類商業(yè)應(yīng)用軟件就是圍繞著數(shù)據(jù)轉(zhuǎn);然而數(shù)據(jù)的來(lái)源各種各樣,如存放在內(nèi)存中的業(yè)務(wù)對(duì)象、存放在xml文件的數(shù)據(jù)、SqlServer關(guān)系數(shù)據(jù)庫(kù)...這些數(shù)據(jù)源的讀取操作各不相同,相互之間的轉(zhuǎn)換也不是那么容易;為此VS.Net提供了各種技術(shù)來(lái)支持這些數(shù)據(jù)源的操作,如操作數(shù)據(jù)庫(kù)的ADO.Net,操作xml文件的API(XmlDocument, XmlReader, XPathNavigator等),以及一些存放在內(nèi)存中的數(shù)據(jù)的操作(數(shù)組,參數(shù)變量,類,泛型等等);如今在C#3.0中提供了一種新技術(shù)來(lái)整合處理各種數(shù)據(jù)操作的問(wèn)題,這就是Linq;

Linq目標(biāo)是實(shí)現(xiàn)語(yǔ)言與數(shù)據(jù)的深度結(jié)合,Linq以統(tǒng)一的數(shù)據(jù)訪問(wèn)方式訪問(wèn)各種數(shù)據(jù)源,以相同的方式讀取數(shù)據(jù),象SQL語(yǔ)句一樣進(jìn)行查詢,而這些都是整合在我們熟悉的編程語(yǔ)言如C#,VB當(dāng)中,另外Linq是使用強(qiáng)類型,并提供編譯時(shí)檢查和VS的智能感知特性等。

下面我們以SQLServer為數(shù)據(jù)源,列舉一段代碼分析一下:

 
 
 
  1. // ADO.NET中我們會(huì)用它提供的SqlConnection, SqlCommand, 
    SqlDataAdapter,SqlReader, DataSet, 和 DataTable等來(lái)訪問(wèn)操作數(shù)據(jù)庫(kù) ;  
  2. //使用SqlDataAdapter填充DataSet  
  3. using (SqlConnection conn = new SqlConnection(""))  
  4. {  
  5. DataSet ds = new DataSet();  
  6. SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Customers", conn);  
  7. da.Fill(ds);  
  8. }  
  9.  //使用SqlDataReader讀取數(shù)據(jù)  
  10. using (SqlConnection connection = new SqlConnection(""))  
  11. {  
  12.  
  13. connection.Open();  
  14. SqlCommand command = connection.CreateCommand();  
  15. command.CommandText = @"SELECT Name, Country FROM Customers WHERE City = @City";  
  16. command.Parameters.AddWithValue("@City", "Paris");  
  17.  
  18. using (SqlDataReader reader = command.ExecuteReader())  
  19. {  
  20. while (reader.Read())  
  21. {  
  22. string name = reader.GetString(0);  
  23. string country = reader.GetString(1);  
  24.  
  25. }  
  26. }  
  27. }

這段代碼中,我們只是一個(gè)簡(jiǎn)單的數(shù)據(jù)讀取,不管是使用SqlDataAdapter還是SqlDataReader都會(huì)碰到一些問(wèn)題:

1.如果直接在代碼里寫(xiě)語(yǔ)句,不能確保語(yǔ)句的正確性,連基本的SQL語(yǔ)句的關(guān)鍵字也不能保證是否書(shū)寫(xiě)正確;而在Linq中把一些常用的關(guān)鍵字如Select、from、where等寫(xiě)成擴(kuò)展方法,確保在編譯時(shí)提供語(yǔ)句的驗(yàn)證;

2.查詢時(shí)使用的參數(shù),和查詢返回的結(jié)果都是弱類型,而在我們面向?qū)ο缶幊讨邢M苁褂脧?qiáng)類型來(lái)確保我們程序的正確,這樣就需要很多的輔助判斷來(lái)確保我們傳入的參數(shù)和得到的結(jié)果是符合相應(yīng)的類型要求;而我們?cè)贚inq使用的都是強(qiáng)類型,可以避免這些多余的判斷,確保程序能得到編譯器的驗(yàn)證,不會(huì)等到運(yùn)行時(shí)才捕獲到錯(cuò)誤;

3.***的問(wèn)題是,這段代碼只適合SQLServer使用,如果使用其它數(shù)據(jù)庫(kù)(Oracle,MySQL...),或者其它數(shù)據(jù)源(xml,文本文件...)就會(huì)改動(dòng)較大,或者重新寫(xiě)方法才能使用,而使用Linq可以有效避免這些問(wèn)題。以上是學(xué)習(xí)Linq。


網(wǎng)頁(yè)標(biāo)題:學(xué)習(xí)Linq經(jīng)驗(yàn)總結(jié)
網(wǎng)站網(wǎng)址:http://m.5511xx.com/article/djejcje.html