.NET 程序員的 Playground :LINQPad
- 2020 年 5 月 19 日
- 筆記
如果想執行一個簡單的 C# 語句並獲得運行結果,通常我們需要做幾個步驟才能達成:
- 打開 Visual Studio 並新建一個控制台項目。
- 在 Program.cs 中編寫代碼並保存。
- 點擊運行按鈕或者 F5 運行程序並查看結果。
通常來說這並不會產生問題。但如果你和筆者一樣為 Visual Studio 安裝了各種插件,那麼 Visual Studio 的啟動時間就會變得很長。在新建項目時,我們必須為這些臨時的代碼指定名稱和保存路徑,如果保持默認的名字,就很可能在今後忘記建立這些文件的用途。
使用 LINQPad 可以解決上面的問題。LINQPad 的軟件包很小只有二十兆左右,啟動速度很快。使用時只需輸入想要執行的 C# 語句,並按下 F5 即可:
快捷鍵 F4 可以打開「查詢屬性」窗口,在這個窗口中,你可以引用所有在運行時需要的東西,包括:dll、配置文件、json和文本文件等,這些引用的文件將會被複制到輸出目錄。
同時,LINQPad 也支持直接將 NuGet 包引用到查詢中:
也可以將查詢保存為一個擴展名為 .linq 的文件,以便復用代碼。
語言支持
包括「C# 表達式(C# Expression)」在內,LINQPad 一共支持 4 種語言和 10 種查詢類型:
- C# Expression
- C# Statement(s)
- C# Program
- VB Expression
- VB Statement(s)
- VB Program
- SQL
- ESQL
- F# Expression
- F# Program
LINQPad 會根據我們鍵入的代碼自動選擇正確的查詢類型,大部分時候我們無需擔心。
結果輸出
使用 Console.WriteLine
等方法輸出的控制台內容會直接在 Result 標籤頁顯示:
LINQPad 內置了名為 Dump
的擴展方法用於將對象的值展示出來。該方法對 Object 類型進行了擴展,並提供了多個重載,讓我們可以對展示結果進行標記:
除了簡單類型,Dump
方法對複雜類型的支持也值得稱讚。我們完全可以僅依賴 Dump
方法就能了解到某個對象的全部取值:
甚至可以直接將一個 WinForm 或 WPF 控件 Dump
出來,且支持交互:
查詢結果也可以進行導出,目前支持:Word、Excel 和 HTML 三種格式。
查詢編輯器的左下方是一個狀態指示,在這裡會展示出查詢的運行狀態和執行時間。這樣,當我們需要簡略測試一個算法的效率時,無需再編寫額外的監測代碼。
數據庫集成
LINQPad 可以通過 Entity Framework 或者 Entity framework Core 及對應的數據庫驅動鏈接至數據庫,比如常見的 SQL Server , MySQL , Oracle 甚至 SQLite 。可以通過程序右上角的「Add connection」完成鏈接工作:
在配置好數據庫鏈接後,我們就可以選定這個鏈接,編寫 C# 代碼來訪問數據庫:
除了可以通過執行 Dump
方法看到運行結果以外,也可以切換至 SQL
標籤頁查看執行的 SQL 語句:
如果需要直接在 LINQPad 中執行 SQL 語句,只需將語言(Language)設置為 SQL 即可:
圖表支持
除了將結果集以表格的形式呈現,LINQPad 也支持直接根據結果集生成統計圖。柱狀圖、折線圖、餅狀圖等均不再話下,且無需很多的額外代碼:
LINQPad 的 Visual Studio 擴展 LINQBridgeVs
LINQBridgeVs 把 LINQPad 強大的 Dump 能力鏈接到了 Visual Studio 上,支持 2012 到 2019 版本:
了解更多
本文涵蓋了 LINQPad 的大部分常用操作。作為一個開發者工具,LINQPad 的上手難度並不大。你可以在 //www.linqpad.net/Resources.aspx 上找到更多關於 LINQPad 的資源。
LINQPad 本身也攜帶了大量的示例代碼,切換左下角的選項卡到 「 Samples 」標籤即可看到:
總結
經過幾個月的使用,LINQPad 確實成為了筆者工作中不可或缺的工具。現在,LINQPad 已經被固定在了任務欄,除了運行一些測試性的代碼,它也被用來作為數據導出工具和工具箱。筆者最喜歡的是其內置的圖表生成功能,當枯燥的數據以圖表的形式展示出來時,除了驚艷,就是說不出來的滿足。
LINQPad 的銷售策略是買斷制,一次購買終身有效且可以在最多三台電腦上同時安裝,高級版單用戶的售價為 700 元人民幣左右,同時支持 LINQPad 5 和 LINQPad 6 兩個版本。如果確實幫助了你,且經濟實力允許,那麼購買一個正版授權也未嘗不可。