2011年9月14日 星期三

LINQPad - 好用到爆炸、.NET開發人員必備的好用工具

自從.NET Framework 3.0 發佈LINQ(音同 Link)之後,對於程式開發人員於專案中的資料庫操作或是集合物件的操作,都有了很大的變化,不論是使用LINQ to SQL 或是 ADO.NET Entity Framework還是對於集合物件的資料查詢、彙整等操作,都可以使用一致性的查詢方式來操作資料。

然而並不是每個.NET開發人員對於LINQ是那麼的熟悉,我從2007年開始接觸LINQ後,至今已經也差不多快四年了,也還是會在周遭聽到或看到:

  • 沒有用過(這位工程師的桌上還擺了好幾本.NET 4.0, 3.5的書!?)
  • 甚至有的工程師只有看過而從來沒有用過(這很令人匪夷所思…都出來這麼多年,也該找個時間好好認識呀)
  • 更有的工程師甚至認為LINQ只是用來取代原本的ADO.NET(這是什麼觀念呀?!)
  • 而更多的開發人員最感到不便的就是要練習LINQ還需要大費周章的開啟Visual Studio然後寫程式後再按F5看結果,因為這樣所以不想認識LINQ(這腦袋不知怎麼想的…)

如果有個方便的工具可以拿來練習LINQ的話,或許對於LINQ可以認識更多。

如果在專案開發時,不用頻繁的F5執行程式看結果,而是可以在工具裡去下LINQ語法然後立即驗證的話,可以使開發更加的便利。

不用再找了!LINQPad就是這樣的一個好用到爆炸、.NET開發人員必備的好用工具。


LINQPad

官方網址 http://www.linqpad.net/

這一套工具為免費的,而且有分為安裝版以及免安裝版,免安裝版就是下載下來之後就可以立即執行使用,不過前提是,你的環境必須要安裝 .NET Framework 3.5或是4.0,雖然說免費的已經很好用了,但是付費的版本更是好用到讓人驚訝不已,付費有兩種版本,一種是Pro而另一種是Premium,兩種版本都有的功能是:autocompletion, smart tags, code outlining, and .NET Reflector integration.
(自動完成,智能標籤,代碼概述,和。NET反射的整合。)

但是Premium版本則還有提供code snippets以及可在MS SQL Server中去執行跨多個資料庫查詢的操作,而且未來當LINQPad有新增企業應用功能時,Premium版本則可以得到免費的功能升級。

 

下圖就是付費版所提供的智能顯示功能

image

另外假如你有使用Chrome瀏覽器,你也可以安裝Chrome的線上應用程式「LINQPad on Roozz

image

而安裝後的使用,就跟使用一般版本的LINQPad是完全一樣的,如下圖所示

image

當我將LINQPad介紹給我的同事使用後,他們也是對它讚不絕口。

我目前專案所使用的資料庫是Oracle,ORM則是使用ADO.NET Entity Framework,在LINQPad裡也是可以正常的使用,除了無法像資料使用MS SQL Server後可以看到轉換的SQL,其他都沒有差別。

 

下圖為資料庫使用MS SQL Server,下LINQ語法在執行後也可以看到轉換的SQL指令:

image

 

這邊對於LINQPad的功能介紹就不多做贅述,以下提供幾位高手對於LINQPad的介紹與教學文章:

InfoQ - 用LINQPad精通LINQ

Demo - LINQPad 有在用LINQ不可或缺的好工具

Bibby - 用 LinqPad 來使用 Entity Framework

 

如果說真的對LINQ語法不熟悉,或是對於LINQPad不知道如何使用,在Sample中有提供範例與教學,只要點開就可以執行並且立即查看執行結果。

image

在Sample中有個「Download more samples…」點擊下去後,會出現以下的視窗:

image

只要點選「Download ….. into LINQPad」就可以將這些samples給增加到LINQPad之中,下圖就是新增加了「LINQ in Action」的範例教學。

image

 

另外在「DeVCURRY - 50 LINQ Examples Now in LINQPad」這篇文章中,作者很佛心的將以往所發表的「dotnet Curry - 50 LINQ Examples, Tips and How To's」提供的50個LINQ範例教學整理成一個壓縮檔,只要在LINQPad中去指定壓縮檔的URL後,就可以將範例教學給新增到Sample中。

壓縮檔下載URL:http://www.dotnetcurry.com/Uploads/linq/LinqQueries.zip

 

一樣是點選LINQPad - Samples的「Download more samples…」,在下方的輸入框中填入上面的網址。

image

新增完成

image

有了這些範例,就可以立即執行查看結果,這樣一來,學習LINQ也可以相當容易與方便了。

 

除了下LINQ語法之外,LINQPad還是我時常用來測試程式片段的工具,在Language去選擇「C# Program」,就可以在 main() 的範圍中去測試程式片段,不過要注意的是,將結果輸出是要用 Dump() 方法。

image

 

就介紹到此,LINQPad真的是個好用到爆炸的工具,不用去開啟龐大的Visual Studio就可以執行LINQ與程式,然後馬上看結果。雖然說免費版的也具備了大部分的功能,但是缺少了智能顯示這個重要的功能,就會覺得整體操作並不是那麼的方便好用,所以我強烈建議可以購買Pro版或是Premium版,價錢上並不是相當昂貴,而是相當實惠的價格,就當做是贊助作者,讓作者可以繼續開發更好更完整的版本。

http://www.linqpad.net/Purchase.aspx

image

Pro版目前的售價為美金39元,Premium版原售價是美金79元,但是有時會碰到促銷折扣,像現在(2011-09-14)就只要美金58元。購買後會給一組序號,這個序號可以提供給三台有安裝LINQPad的電腦以及三台虛擬電腦使用,所以會建議湊齊三個人然後去購買一組授權,以Pro版來說,一個人也才花費美金13元(約NTD 400元)

 

以上!

7 則留言:

  1. 您好,我想請問的是我查詢出的結果中文都是亂碼,LinqPad的版本是Free Edition V4.57.02
    在Preference中找不到相關的字元編碼設定,請問免費的LinqPad是否有相關的設定,謝謝

    回覆刪除
    回覆
    1. Hello,
      這無關 LINQPad 的問題,也並非是否使用免費或付費版本的問題,
      應該是要看你資料庫的欄位型別與定序的設定,
      因為我並沒有遇到這樣的問題,所以就沒有特別去注意,
      根本的解決方法就是去修改欄位型別(例如原本是 varchar 改為 NVARCHAR),或是修改欄位的定序。

      刪除
  2. 作者已經移除這則留言。

    回覆刪除
  3. LINQPad只能單向LINQ轉SQL, 有沒有SQL轉LINQ(free的版本)?

    回覆刪除
    回覆
    1. SQL轉LINQ ... 那是沒意義的
      有這東西,在多年以前是曾經有過,但是要錢
      要先搞懂為何 LINQ 語法可以轉換成 SQL Script,再了解兩者的不同
      如果真有好用的 SQL to LINQ 的工具,為何不曾聽過有人去討論與推薦呢?

      刪除
  4. 實際用過LINQpad後有種相見恨晚的感覺
    要試一段程式不用再開一個console專案或是找線上coding網站
    要串SQL試撈資料不用再開SSMS
    這算是少數我用了就想直接付費的開發工具

    不過過了8年LINQpad的定價好像改了
    除了Pro跟Premium漲價外,又多了個Developer版

    我不太確定要買Developer版就好還是直上Premium版
    因為我不知道Premium多出的Override跟Debugger功能在平常開發中是否會常常用到

    回覆刪除
    回覆
    1. 以現在 2019-03 的定價來看
      DEVELOPER $79
      PREMIUM $95
      大概差 $16 大約新台幣 492 元 (就以 500 元來看)
      要不要那些增加的功能就看平常拿 LINQPad 來做什麼用途、使用的頻率有多少來看

      以我來說,現在開啟 LINQPad 的頻率已經不如寫這篇文章的時候(2011年)
      但現在用 LINQPad 時還是不時會用到中斷點功能
      LINQPad 大版本的更新不是常常在更迭,每個版本都能用很久(LINQPad 不是按年收費,一個版本收一次費用)
      500 元的價差,對我而言是有實際的價值
      至於 override 功能,我就很少用到

      刪除

提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。