本篇內(nèi)容主要講解“Linq有什么作用”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Linq有什么作用”吧!
站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到金沙網(wǎng)站設(shè)計(jì)與金沙網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站制作、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋金沙地區(qū)。
學(xué)習(xí)Linq
在我們的軟件中,數(shù)據(jù)的重要性不可言喻,特別是象ERP,CRM等等這類(lèi)商業(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ù)變量,類(lèi),泛型等等);如今在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)行查詢(xún),而這些都是整合在我們熟悉的編程語(yǔ)言如C#,VB當(dāng)中,另外Linq是使用強(qiáng)類(lèi)型,并提供編譯時(shí)檢查和VS的智能感知特性等。
下面我們以SQLServer為數(shù)據(jù)源,列舉一段代碼分析一下:
// ADO.NET中我們會(huì)用它提供的SqlConnection, SqlCommand,
SqlDataAdapter,SqlReader, DataSet, 和 DataTable等來(lái)訪問(wèn)操作數(shù)據(jù)庫(kù) ;//使用SqlDataAdapter填充DataSet
using (SqlConnection conn = new SqlConnection(""))
{
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Customers", conn);
da.Fill(ds);
}
//使用SqlDataReader讀取數(shù)據(jù)
using (SqlConnection connection = new SqlConnection(""))
{
connection.Open();
SqlCommand command = connection.CreateCommand();
command.CommandText = @"SELECT Name, Country FROM Customers WHERE City = @City";
command.Parameters.AddWithValue("@City", "Paris");
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
string name = reader.GetString(0);
string country = reader.GetString(1);
}
}
}
這段代碼中,我們只是一個(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.查詢(xún)時(shí)使用的參數(shù),和查詢(xún)返回的結(jié)果都是弱類(lèi)型,而在我們面向?qū)ο缶幊讨邢M苁褂脧?qiáng)類(lèi)型來(lái)確保我們程序的正確,這樣就需要很多的輔助判斷來(lái)確保我們傳入的參數(shù)和得到的結(jié)果是符合相應(yīng)的類(lèi)型要求;而我們?cè)贚inq使用的都是強(qiáng)類(lèi)型,可以避免這些多余的判斷,確保程序能得到編譯器的驗(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)題。
到此,相信大家對(duì)“Linq有什么作用”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!