SQL語句轉化為Linq語句
分少點!回頭幫我的團隊打工償還吧!O(∩_∩)O哈哈~-------------我的表是Table_1s和Table_2slinq 查詢如下:from t in Table_1s join f in Table_2s on t.B equals * into FD from f in *(b=>*e=="B").DefaultIfEmpty() join s in Table_2s on t.C equals * into FDS from s in *(b=>*e=="C").DefaultIfEmpty()select new{ A=t.A, B=*, C=*}---對應sql如下:-- Region ParametersDECLARE @p0 NVarChar(1) SET @p0 = 'B'DECLARE @p1 NVarChar(1) SET @p1 = 'C'-- EndRegionSELECT [t0].[A], [t1].[value] AS [B], [t2].[value] AS [C]FROM [Table_1] AS [t0]LEFT OUTER JOIN [Table_2] AS [t1] ON ([t1].[RowName] = @p0) AND ([t0].[B] = [t1].[key])LEFT OUTER JOIN [Table_2] AS [t2] ON ([t2].[RowName] = @p1) AND ([t0].[C] = [t2].[key])---應該滿足你的要求!。
LinQ 可以取代SQL語句嗎
LINQ查詢和更新數據基本可以取代SQL語句,但創建和刪除數據庫文件等維護工作不能代替SQL語句,當然也可以用VS2010創建數據庫文件,但不如數據庫工具使用SQL語言方便。查詢如篩選、排序、匯總、提取字段、分組和聯接等,LINQ的寫法與SQL基本一樣,還多一項Lambda表達式。
在C#中引入LINQ是為了在編寫和編譯數據庫代碼時就能知道是否有錯,編寫時能得到LINQ類庫的提示,例如要添加的屬性成員和關鍵字提示,使編程輕松方便。如果不用LINQ,SQL語句只能以字符串形式嵌入到執行語句,編譯時發現不了字符串的錯誤,運行時出錯,讓人惱火。
另一個優點是LINQ發展到LINQ to SQL,可以用O/R設計器處理數據庫,把數據庫映射為C#中的類,為數據庫的可視化編程提供方便。參見《C#編程指南》(但堯,清華大學出版社2011年1月,可網購),該書比較詳細討論LINQ處理數據庫,有很多示例演示如何對SQL2008的示例數據庫AdventureWorks2008(以及DW2008,LT2008)的查詢更新排序優化聯接等。
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的效率為什么會更高了!因為他在讀取時不但會讀取當前表來填充生成的對象,同時還是延時讀其相關表,為你使用有關系的表提供了極大的方便。
那么你的相關表的讀取效率要快了!但不管怎么樣,他們都是在站立在了*的基礎之上的,只不過有些自動生成了,根本不需要你再去做而已。唯一效果比較差的是,linq to sql讀出的數據在系統中被轉化了,同時它效率雖然變差一些,但是卻帶來了另一個好處,就是我們常說的SQL注入問題不再出現,你所輸入的任何東西都會變成了字符串了。
其實*的方案中我們使用了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本身上來就,效率并不差的!。
怎么查看linq產生的sql語句
class table
{
public string id
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
List
最近在使用Linq To SQL的時候,為了了解不同Linq語句對性能造成的不同影響,需要獲得Linq To SQL輸出SQL語句。
如果是在桌面程序中,只需要
_* = *; 即可Linq To SQL輸出SQL語句。
如何查看某個用戶執行過的sql語句
--sys窗口
sql> select sql_text from v$sql where parsing_schema_name='scott'
2 order by last_load_time desc;
no rows selected
sql> /
sql_text
-------------------------------------------------------------------------------
select * from dept
sql>
--scott窗口
sql> show user
user is "scott"
sql> select * from dept;
deptno dname loc
LINQ to 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 to 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強大的智能感知功能的幫助。