溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linq有什么作用

發(fā)布時間:2021-12-01 16:18:57 來源:億速云 閱讀:170 作者:iii 欄目:編程語言

本篇內(nèi)容主要講解“Linq有什么作用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(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)是實現(xiàn)語言與數(shù)據(jù)的深度結(jié)合,Linq以統(tǒng)一的數(shù)據(jù)訪問方式訪問各種數(shù)據(jù)源,以相同的方式讀取數(shù)據(jù),象SQL語句一樣進行查詢,而這些都是整合在我們熟悉的編程語言如C#,VB當(dāng)中,另外Linq是使用強類型,并提供編譯時檢查和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. }

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

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

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

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

到此,相信大家對“Linq有什么作用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI