成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

學(xué)習(xí)Linq經(jīng)驗(yàn)總結(jié)

開發(fā) 后端
這里介紹學(xué)習(xí)Linq,Linq以統(tǒng)一的數(shù)據(jù)訪問方式訪問各種數(shù)據(jù)源,以相同的方式讀取數(shù)據(jù),象SQL語句一樣進(jìn)行查詢,而這些都是整合在我們熟悉的編程語言如C#。

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

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

學(xué)習(xí)Linq

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

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

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

  1. // ADO.NET中我們會用它提供的SqlConnection, SqlCommand, 
    SqlDataAdapter,SqlReader, DataSet, 和 DataTable等來訪問操作數(shù)據(jù)庫 ;  
  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è)簡單的數(shù)據(jù)讀取,不管是使用SqlDataAdapter還是SqlDataReader都會碰到一些問題:

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

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

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

【編輯推薦】

  1. LINQ Customers類概括
  2. LINQ查詢操作全面分析
  3. LINQ to SQL的Table剖析
  4. Linq數(shù)據(jù)分組全面描述
  5. LINQ查詢基礎(chǔ)概括
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2009-09-11 13:29:31

LINQ查詢操作

2009-09-16 17:44:54

LINQ to SQL

2009-09-08 10:57:55

LINQ查詢操作

2009-09-08 16:02:47

Linq使用Group

2009-09-09 17:14:17

Linq lambda

2011-07-08 13:15:52

JSP

2009-08-13 18:13:27

C#學(xué)習(xí)經(jīng)驗(yàn)

2011-07-21 13:40:17

java

2013-12-18 15:54:21

2010-06-13 13:44:07

UML學(xué)習(xí)筆記

2010-06-02 09:06:26

SVN學(xué)習(xí)

2009-08-11 14:20:41

C# .NET學(xué)習(xí)經(jīng)驗(yàn)

2009-10-15 09:27:00

2010-01-05 16:46:14

學(xué)習(xí).NET Fram

2009-09-01 13:10:39

C#讀取Word

2009-08-19 09:24:43

AJAX引擎經(jīng)驗(yàn)總結(jié)

2009-09-29 16:32:11

OJB Hiberna

2009-09-10 17:38:04

LINQ技術(shù)

2009-09-11 12:08:09

Linq to SQL

2009-09-07 17:09:45

Linq To Sql
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧州一区二区三区 | 国内自拍视频在线观看 | 91在线观看网址 | 天堂一区二区三区四区 | 欧美mv日韩mv国产网站91进入 | 国产粉嫩尤物极品99综合精品 | 亚洲精品美女视频 | 成人综合久久 | 91黄色免费看 | 最新超碰 | 黄色欧美 | 人人干人人舔 | 天天干天天操天天看 | 久久丁香| h视频网站在线观看 | 日韩在线综合 | 国产九一精品 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 乱码av午夜噜噜噜噜动漫 | 最新超碰 | 台湾佬成人网 | 天天操精品视频 | 国产精品久久久久久久久久久新郎 | 亚洲天堂一区二区 | 亚洲一二三区在线观看 | 亚洲精品成人 | 欧美一区二区免费 | 日韩高清三区 | 91在线最新 | 久久一区二区三区四区五区 | 欧美a∨ | 国产乱码精品一区二区三区中文 | 午夜久久久久 | 亚洲人人舔人人 | 日本超碰 | 午夜视频免费在线观看 | 成人免费观看视频 | 中文字幕欧美在线观看 | 欧美一二三区 | 九九久久免费视频 | 欧美aaaaaa|