當前位置:首頁 » 編程語言 » linq和sql的正確發音
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

linq和sql的正確發音

發布時間: 2022-06-09 14:10:05

① linq to sql語句和sql語句一樣嗎

大概差不多
sql是這樣:select 列名 from 表名 where 條件
linq是:
DataClasses1DataContext db= new DataClasses1DataContext();
var t = from s in db.表名
where s.列名=?
select s;

② LINQ和LINQ to SQL有區別嗎之間關系是什麼

本質上沒什麼區別,都指的是同一種概念,專門為sqlserver資料庫服務,就像MySql專門為PHP量身打照一樣,大部分人為了上口一般叫Linq。

③ 弱弱的問一個Linq和資料庫sql性能的問題

對的。一個是從資料庫拿出所有數據再篩選,一個是直接在資料庫查找符合條件的數據,效率當然不一樣。LINQ
TO
SQL的確存在性能問題,但是LINQ
TO
XML等其他功能還是很好用的。

④ Linq和sql的正確發音

Linq
=
link
SQL
=
see
q
well
連讀就是[si:kwel]
看讀音也能大體知道個人水平,一般人容易讀錯.把
Linq
讀為
link
cue,把SQL讀為
色扣.這種發音是不準的,只能說是不正統,但是不影響交流.

⑤ 求總結linq與sql語法比較

linq是面向對象的sql。也就是說,sql是向關系型資料庫的查詢,而linq實際上是對內存里的數據的查詢。

雖然linq原來是對象查詢,但經過ms的努力,可以通過表達式分析與實體到關系的映射(linq to sql),把linq轉換為sql語句或是對xml的查詢(linq to xml)。

因此,這種技術就成了對象到資料庫記錄的一個方便的映射、轉化與操作的工具,你再也不必去去根據不同的情況用字元串拼接的辦法生成sql,而是專心於對象模型的處理即可,你對於對象的修改最終都會被轉換為對應的update, insert, delete等sql語句,在你submit時全部提交到資料庫中。

綜爾言之,linq to sql是一個資料庫到對象結構的一個中間層, 他把對關系數據的管理轉變為對象的操作,屏蔽了麻煩的sql,而且,還可以得到vs強大的智能感知功能的幫助。

LINQ,語言集成查詢(Language INtegrated Query)是一組用於c#和Visual Basic語言的擴展。它允許編寫C#或者Visual Basic代碼以查詢資料庫相同的方式操作內存數據。

基本概念
從技術角度而言,LINQ定義了大約40個查詢操作符,如select、from、in、where以及orderby(C#)中。試用這些操作可以編寫查詢語句。不過,這些查詢還可以基於很多類型的數據,每個數據類型都需要一個單獨的LINQ類型。 經過了最近 20 年,面向對象編程技術( object-oriented (OO) programming technologies )在工業領域的應用已經進入了一個穩定的發展階段。程序員現在都已經認同像 類(classes)、對象(objects)、方法(methods)這樣的語言特性。考察現在和下一代的技術,一個新的編程技術的重大挑戰開始呈現出來,即面向對象技術誕生以來並沒有解決降低訪問和整合信息數據( accessing and integrating information )的復雜度的問題。其中兩個最主要訪問的數據源與資料庫( database )和 XML 相關。 LINQ 提供了一條更常規的途徑即給 .Net Framework 添加一些可以應用於所有信息源( all sources of information )的具有多種用途( general-purpose )的語法查詢特性( query facilities ),這是比向開發語言和運行時( runtime )添加一些關系數據( relational )特性或者類似 XML 特性( XML-specific )更好的方式。這些語法特性就叫做 .NET Language Integrated Query (LINQ) 。 包含 DLinq 和 XLinq
基礎知識
1. LINQ的讀法:(1)lin k (2)lin q 2. LINQ的關鍵詞:from, select, in, where, group by, order by … 3. LINQ的注意點:必須以select或者是group by 結束。 4. LINQ的語義: from 臨時變數 in 集合對象或資料庫對象 where 條件表達式 [order by條件] select 臨時變數中被查詢的值 [group by 條件] LINQ的查詢返回值的類型是臨時變數的類型,可能是一個對象也可能是一個集合。並且LINQ的查詢表達式是在最近一次創建對象時才被編譯的。LINQ的查詢一般跟var關鍵字一起聯用 (什麼是var?匿名對象) 。 5. LINQ的全稱:Language-Integrated Query 6. LINQ的分類:LINQ to Object, LINQ to XML, LINQ to SQL, LINQ to ADO.NET 7. 命名空間:System.Linq; 注意:Linq是在.NET Framework 3.5 中出現的技術,所以在創建新項目的時候必須要選3.5或者更高版本,否則無法使用。 選擇3.5或更高版本的.NET Framework之後,創建的新項目中會自動包含System.Linq的命名空間。
語法實例
C#3.0 LINQ 查詢語法 首先來看一個很簡單的LINQ查詢例子,查詢一個int 數組中小於5的數字,並按照大小順序排列: class Program { static void Main(string[] args) { int[] arr = new int[] { 8, 5, 89, 3, 56, 4, 1, 58 }; var m = from n in arr where n < 5 orderby n select n; foreach (var n in m) { Console.WriteLine(n); } Console.ReadLine(); } } 上述代碼除了LINQ查詢語法外,其他都是我們所熟悉的語法,而LINQ查詢語法跟SQL查詢語法很相似,除了先後順序。 Q:為何 LINQ 查詢語法是以 from 關鍵字開頭的,而不是以 select 關鍵字開頭的?select 開頭這種寫法跟SQL的寫法更接近,更易懂呀? A:簡單來說,為了IDE的智能感知(Intelisence)這個功能,select 關鍵字放在後面了。 編程語言以 select 開頭寫LINQ查詢語法不是沒出現過,你如果使用過2005年的VB9 CTP 版本,那時候VB9的LINQ查詢語法就是 select 關鍵字在前面,但是 select 關鍵字在前面,在做智能感知(Intelisence)時候就很頭大。經過微軟IDE組的權衡,確定了把 from 關鍵字放在最前面。 那時候 VB9 LINQ的查詢語法還是 select 參數在最前面。不過後來 VB9 測試版改成了跟 C# 一樣的做法, from 關鍵字放在最前面了。 更詳細的解釋,來自裝配腦袋 假設你要書寫這樣的代碼:Select p.Name, p.Age From p In persons Where xxx ,代碼是一個個字元輸入的。 我們在寫到 p in persons 之前,p 的類型是無法推測的,所以寫 Select p. 的時候,Name之類的屬性不會彈出智能提示來。 這樣就需要先去寫 From 這句,再回來寫 Select。 微軟IDE組經過反復考慮決定,還不如就把 Select 寫到後面了。於是編程語言中的寫法就確定這樣來寫了。 VB9 的這個變化可以參看這篇博客: Select/From vs. From/Select revisited... 我們再來看一個稍稍復雜的LINQ查詢: 在我們羅列的語言字元串中,我們希望按照字元長短,分類羅列出來,實現代碼如下: static void Main(string[] args) { string [] languages = {"Java","C#","C++","Delphi","VB.net","VC.net","C++ Builder","Kylix","Perl","Python"}; var query = from item in languages orderby item group item by item.Length into lengthGroups orderby lengthGroups.Key descending select lengthGroups; foreach (var item in query) { Console.WriteLine("strings of length {0}",item.Key); foreach (var val in item) { Console.WriteLine(val); } } Console.ReadLine(); } 其中的 into 關鍵字表示 將前一個查詢的結果視為後續查詢的生成器,這里是跟 group by 一起使用的。 LINQ中的Group by不要跟 SQL 中的Group by 混淆,SQL 由於是二維結構,Group by 的一些邏輯受二維結構的約束,無法像 LINQ 中的Group by 這么靈活。
Linq的內部執行原理淺析
LINQ(Language Integrated Query)是Visual Studio 2008中的領軍人物。藉助於LINQ技術,我們可以使用一種類似SQL的語法來查詢任何形式的數據。目前為止LINQ所支持的數據源有SQL Server、XML以及內存中的數據集合。開發人員也可以使用其提供的擴展框架添加更多的數據源,例如MySQL、Amazon甚至是Google Desktop。 一般來講,這類查詢語句的一個重要特點就是可以並行化執行。雖然有些情況下並行可能會帶來一些問題,但這種情況非常少見。這樣也就水到渠成地引出了PLINQ這個並行處理的LINQ類庫。 PLINQ原名為Parallel LINQ,支持XML和內存中的數據集合。執行於遠程伺服器上的查詢語句(例如LINQ to SQL)顯然無法實現這個功能。 將LINQ語句轉換為PLINQ語句極為簡單——只需要在查詢語句中From子句所指定的數據源的最後添加.AsParallel()即可。隨後Where、OrderBy和Select子句將自動改為調用這個並行的LINQ版本。 據MSDN Magazine介紹,PLINQ可以以三種方式執行。第一種是管道處理:一個線程用來讀取數據源,而其他的線程則用來處理查詢語句,二者同步進行——雖然這個單一的消費線程可能並不那麼容易與多個生產線程同步。不過若是能夠仔細配置好負載平衡的話,仍然會極大地減少內存佔用。 第二種模式叫做「stop and go」,用於處理結果集需要被一次返回時(例如調用ToList、ToArray或對結果排序)的情況。在這種模式下,將依次完成各個處理過程,並將結果統一返回給消費線程。這個模式在性能上將優於第一種模式,因為它省去了用來保持線程同步所花費的開銷。 最後一種方法叫做「inverted enumeration」。該方法並不需要實現收集到所有的輸出,然後在單一的線程中處理,而是將最終調用的函數通過ForAll擴展傳遞到每個線程中。這是目前為止最快的一種處理模式,不過這需要傳遞到ForAll中的函數是線程安全的,且最好不包含任何lock之類的互斥語句。 若是PLINQ中任意的一個線程拋出異常,那麼所有的其他線程將會被終止。若是拋出了多個異常,那麼這些異常將被組合成一個MultipleFailuresException類型的異常,但每個異常的調用堆棧仍會被保留。 關於LINQ的技巧從大的方面來看它能給開發團隊帶來的好處: 1、無需復雜學習過程即可上手 2、編寫更少代碼即可創建完整應用。 3、更快開發錯誤更少的應用程序。 4、無需求助奇怪的編程技巧就可合並數據源。 5、讓新開發者開發效率更高。

⑥ C#3.0使用LINQ和sql有什麼區別

sql是sqlLINQ,語言級集成查詢(Language INtegrated Query) 經過了最近 20 年,面向對象編程技術( object-oriented (OO) programming technologies )在工業領域的應用已經進入了一個穩定的發展階段。程序員現在都已經認同像 類(classes)、對象(objects)、方法(methods)這樣的語言特性。考察現在和下一代的技術,一個新的編程技術的重大挑戰開始呈現出來,即面向對象技術誕生以來並沒有解決降低訪問和整合信息數據( accessing and integrating information )的復雜度的問題。其中兩個最主要訪問的數據源與資料庫( database )和 XML 相關。 LINQ 提供了一條更常規的途徑即給 .Net Framework 添加一些可以應用於所有信息源( all sources of information )的具有多種用途( general-purpose )的語法查詢特性( query facilities ),這是比向開發語言和運行時( runtime )添加一些關系數據( relational )特性或者類似 XML 特性( XML-specific )更好的方式。這些語法特性就叫做 .NET Language Integrated Query (LINQ) 。

⑦ Linq和LinqtoSql有什麼區別一般做項目用哪種

Linq是微軟在.net3.0推出的一種新的數據訪問和處理的方式,來解決過去處理集合對象數據所遇到的種種困難。其中在C#3.0和VB9中分別引入了和SQL相似的Linq語法,使得現在操作各種數據對象變得非常容易而且可讀性更好。

Linq To Sql是微軟默認提供的LinqProvider的一種,其他的還有LinqToDataSet LinqToXml LinqToEntity等。

平時開發項目可以大量的使用linq,他會讓你在處理大量集合數據的時候提高效率。而Linq2Sql算是一個ORM框架,可以用來減輕數據訪問的負擔,如果你知道Hibernate之類的ORM框架的話,就很容易理解他了

⑧ SQL與LINQ的區別是什麼啊

確實就是語法差不多。
那麼你了解面向對象嗎?
LINQ(LINQ to SQL)操作的都是對象(資料庫表映射成實體對象)

你必須對對象有深刻認識,才能體會ORM的便捷。

⑨ LINQ比一般的SQL語句效率更高嗎

Linq是一個范圍比較大的概念,它其中不單單只有linq to sql,還有相應的linq to xml等等。所以拿linq 與SQL語句相比,沒有可比性的。

但如果拿linq to sql相比的話,與SQL還是有很大的可比性的。一般情況下,你必須要明白你所指的效率是哪一方面?是資料庫執行效率?還是整體成品軟體運行效率?還是開發效率?

開發效率上linq to sql顯然要比SQL的效率要高很多,我們使用linq to sql 可以很容易實現編程,其中的代碼量也大大減少。所以如果從開發方面linq to sql的效率是毫無疑問要高於直接的SQL與資料庫連接。

如果從編方譯考慮,這個一般情況下,linq to sql是引入的新的技術,效率肯定是不如SQL的。好在這個編譯的部分不需要開發人員或是任何用戶的參與,所以即是效率差一點,對軟體來說沒有任何的影響。

最後一部分你可以比較感興趣,誰對資料庫的連接更快,執行效率更好?答案是linq to sql而不是直接的語句。一般我們使用直接的語句要求的是即是的執行,但事實上很多時間我們根本不需要那麼多,linq to sql其實說明了就是會自動生成與表結構同樣的一些對象。而這些對象在聯系資料庫時也是直接編譯好的語句,直接聯系時,兩者效率是相同的。

但是,如果我們對數據進行處理時,你就會發現,linq to sql的效率為什麼會更高了!因為他在讀取時不但會讀取當前表來填充生成的對象,同時還是延時讀其相關表,為你使用有關系的表提供了極大的方便。那麼你的相關表的讀取效率要快了!

但不管怎麼樣,他們都是在站立在了ado.net的基礎之上的,只不過有些自動生成了,根本不需要你再去做而已。唯一效果比較差的是,linq to sql讀出的數據在系統中被轉化了,同時它效率雖然變差一些,但是卻帶來了另一個好處,就是我們常說的SQL注入問題不再出現,你所輸入的任何東西都會變成了字元串了。

其實ADO.net的方案中我們使用了datareader方案的效高是比較高的,但是對於更新卻是極差的。而使用數據適配器的方案效率較底一些,更對於數據的更新是相當好的,而對於linq to sql其實它是使用數據緩存方案,也就是說linq to sql其實將資料庫中的數據緩存到了對象中,如果對象發生了更改,有必須過行返饋時,它是可以進行反饋的,而是這種反饋是可控制的,事務性的。從各方面給我們帶來了好處。

我們可以在更新了很多內容之後再去提交更改,那麼這種效率論從理解上還是效率上都優化你的原來的語句的!所以linq to sql並非在性能上的降低,而是一種提高。

嚴格說來,linq to sql並不是節省了代碼,相反它增加了很多代碼,便幸運的是,這些代碼都是由linq to sql框架自動生成的。若是換作人工,容易出錯的。但在使用時,由於框架完成了大部分的代碼,我們再使用linq to sql加上lambad表達式或查詢表達式,我們的代碼就變得極少且極簡潔了!而如果使用lambad表達式或查詢表達式時,它的效率顯然不如直接SQL來的直接。讀取效率會變得差一些的!

這是因為lambda表達式或查詢表達式是一個動態編譯的效果,而不是直接編譯好的,他要對語句進行編譯與優化以何證效率,但性能上因為多了一重處理,效率沒有SQL來的直接。但一般情況下,使用linq to sql配合查詢表達式或lambad表達式時,效率雖然稍差,但是帶來的卻是代碼的簡潔與易理解性,如果不配合查詢表達式與lambad表達式,linq to sql的優劣還不利用體現。所以關非linq to sql的效率差,而是我們使用了查詢表達式的動態編譯導致了效率較差。就linq to sql本身上來就,效率並不差的!