利用VS2022的取代,將LINQ改寫純SQL應用
前言:
抱歉~我就是個不求新知的老人-.-"
只會在工作當下有需要才學習0.0a
目前習慣就是只會寫純SQL做一切功能應用
經查LINQ對於純SQL而言是無法進行複雜操作的
LINQ對於效能比SQL低,但對於程式碼可讀性極高(可反向追朔、顯示註解說明)
前陣子~有一篇文章詢問VS2022的取代用法
https://ithelp.ithome.com.tw/questions/10215002
目的就是要將SQL直接貼來Visual Studio裡面使用
原先的取代指令~是不含中文字的搜尋判斷
搜尋:--(?<value>[\a-z]+)\r\n
轉換:\tSql += " ${value}";\r\n
增加中文字的搜尋
搜尋:--(?<value>[\a-z\u4e00-\u9fa5]+)\r\n
轉換:\tSql += " ${value}";\r\n
以下這些程式碼,是從某開發公司買斷(看原始碼的工程師時間異動註記,從2021開發到2023),後來買來自己開發增加更多功能(客製化)
01.原先的LINQ是長這樣
02.我到資料庫介面,寫一段一樣功能輸出的SQL
03.將寫好的SQL,全部都註解起來
04.將註解的SQL,貼到Visual Studio裡面,另外最好按一下【Ctrl+Z】,因為Visual Studio好像會自動修正片段變成斷第2行。
05.下達Visual Studio的取代及轉換指令(正規表示式)
06.執行取代命令完成後,SQL就轉換成C#專用的字串設定了
07.這是執行SQL後,查資料匯出到Excel的寫法(原開發公司的LINQ寫法,我都刪除了-.-"),我還是習慣寫VB時代的用法。
對於接到Asp.net + Kendo UI,因為我是第一次使用Kendo UI,很多都是陌生語法結構,幸好前輩的電腦有留下Kendo UI的參考連結,在大陸有詳細介紹前端,台灣並沒有相關詳細介紹的樣子?
CSDN 博客:Kendo UI Grid 用法详细整理
https://blog.csdn.net/qwerdfcv/article/details/103479584
01.在View目錄的網頁,用Kendo UI Grid方式產生HTML原始碼(目前查不到相關網頁介紹MVC)
02.用JacaScript去跟產生HTML原始碼溝通互動的相關指令(大陸有詳細介紹)
2024/02/15 更新
感謝suika邦友推薦
改用 逐字字串常值 的方式
https://learn.microsoft.com/zh-tw/dotnet/csharp/programming-guide/strings/#verbatim-string-literals
改用此方式就不需要用取代了。
目的是要轉成CSV,好給Excel. 用SQL做 Pivot 就好了.
原本那段 LINQ 的寫法, 一種假別做一次查詢, 程式又是複製貼上.
LINQ應該有高明一點的寫法.
其實他不止假別~還有混合遲到、早退、獎逞(各種表格)
他們LINQ判斷一堆有的沒的(套裝版),但使用的公司(制度)用不到~很多都刪除掉了
這是最後LINQ判斷完後匯出Excel或PDF列印 (原始資料[已刪除更改])
然後這是他的前端介面~很簡單查部門、查哪個月份,要產生列印(生成PDF檔案)或Excel(.xlsx檔案)
調整成適合的情況,辛苦了,加油!
我覺得這個SQL好用~
可以查出隱藏新增資料的關聯表格(程式碼沒寫)
當執行中的程式按送出後~
在資料庫馬上查詢~就知道LINQ轉換SQL後影響那些表格
--即時查詢SQL異動紀錄(顯示完整SQL)
SELECT st.text as sql_statement,
qs.creation_time as plan_last_compiled,
qs.last_execution_time as plan_last_executed,
qs.execution_count as plan_executed_count,
qp.query_plan
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.plan_handle) st
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
order by total_elapsed_time/execution_count desc
取代及轉換的部分,以你的情況其實只需要加上 @ (使用逐字字串常值實現)
string sql = @"
SELECT *
FROM USER
WHERE USER_PERMISSION > 655
";