此篇转发自港澳台LINQPad用户PETER的文章
对于.NET的工程师来说最幸福的就是我们有史上最强大的IDE:Visual Studio,随便你要上山还是下海,用着Visual Studio就像是开着蝙蝠车一样横行天下。
But!强大如Visual Studio也是有缺点的,例如说摩天布鲁斯要去公司露个脸,总不能开着蝙蝠车去吧。这时在车库里的兰博基尼就排上用场了,这台兰博基尼就是我们本篇的主角LINQPad。
本篇目标:
介绍LINQPad的以下主題:
- 用途
- 安装
- 界面
- 用法: Expression、Statement(s)及Program
- 引入参考
- 与资料库连线
- Extension Methods
- 小诀窍
用途
如上所述,LINQPad之于Visual Studio就像是跑车之于战车一样,Visual Studio的功能强大,要做任何事情都难不倒它,但缺点就是太笨重了,消耗的资源太多,如果我们只是要做一些程式片段的验证测试或是学习还要开启Visual Studio然后创建专案,光是想到就会让人却步,这时候LINQPad就派上用场了,它有下列的优点:
- 它很轻盈(15MB)
- 有Portalble版本不用安装可以带着走,想在哪写就在哪写
- 可以不用建立专案甚至不用写Class,只要写你想要测试的程式码即可(Expression、Statement)
- 可以把程式码片段(code snippet)存起来当作范例使用
接下来我们来看看要怎么使用LINQPad吧。
安装
请至
LINQPad有付费版本,个人觉得付费版本很实用的功能有:
- 自动完成
- 跟NuGet整合
- Debugger
介面
介面分为四个部分:
- 伺服器连线浏览
- 片段浏览器
- 程式撰写
- 执行结果
- Result: 查询结果(LINQPad提供Dump来得到较好的显示品质)
- Lambda: LINQ转为LINQ Method后的程式
- SQL: LINQ转出的SQL Query
对介面有初步的认识后我们就来用LINQPad写一些程式吧。
用法
对于C#,LINQPad有三种编写方式:
- Expression 单行程式或是单个LINQ陈述式
- Statement(s) 多行的程式片段
- Program需要撰写Class或是Method时
Expression
- 使用场景 练某个刚认识的Method时或是要以LINQ取得想要的资料时....等
- 使用方式
;
以单行程式码的方式撰写,最后不用加分号(;
) - 范例
- 想要输出期望的日期格式时(LINQPad as a Code Scratchpad))
可以看到Result直接输出结果,在测试或学习Method时很好用。
- 以LINQ查询一段句子的每个字的长度时(范例取自LINQPad>Samples>LINQPad Tutorial & Reference>5-minute induction>A simple query expression)
就算是分成多行,只要还是一个陈述式就算是Expression。对于要找出期望的资料很好用。
Statement(s)
- 使用场景
- 使用方式
class;
- 用多个LINQ查询资料时(范例取自
Program
- 使用场景 需要演练Method、Function或是Class时
- 使用方式 跟写Console App一样的方式
- 有个Method/Class要做测试时
你没看错!!最外面是不需要再一层Class的,可以直接写所需的程式码,是不是很方便阿。
当然如果你外面还是想要包Class(跟正规的程式相同)的话也可以,请参考
引入参考
在LINQPad上如果有需要引入参考的话有两个方式:
- 按下F4
- 在程式撰写的区块按右鍵>References and Properties
进入Query Properties 页面,按下Add...或是Browse...按钮选择需要的参考加到程式中
与资料库连线
在没有LINQPad的帮助下,我们要测试用LINQ抓取的资料库资料是否正确时,我们需要做下面两件事:
- 取得连线字串
- 开启连线
接着我们才能开始撰写LINQ,这一来一往间就耗掉了许多的时间,这时就该是LINQPad出场的时候了。
设定连线
现在我们要帮LINQ设定好DB的连线方式。
- 左上方区块里按下Add connection,跳出的视窗里直接按下next
- 2进入下一个页面,这里跟连线SSMS的设定相同,设定好后按下OK(也可以按Test测试连线是否正确)
- 3连线完成后就可以在左上的区块看到Database,我们的Northwind出现了
使用资料库资料做LINQ演练
- 对Northwind按右鍵>Use in Current Query
2.连线成功后可以看到程式码区块上的Connection变成Northwind
3.接着我们来写个LINQ(此范例为LINQPad>Samples>LINQPad Tutorial & Reference>5-minute induction>What about querying a database!),执行后我们可以看到梦寐以求的资料了!~~
执行SQL语法
有没有想要查询资料库时却不想打开资料库工具呢?这时候LINQPad又可以派上用场了(万能阿~~)。
照着下面的步骤来取得Northwind中单价(UnitPrice)最高的产品(Products):
- 新增一个新的Query
- 与Northwind做連線
- 在Language中选择SQL
- 输入下面的SQL:
上述的范例如果还看不过瘾的话,在LINQPad>Samples>LINQPad Tutorial & Reference>5-minute induction>But I don't have NORTHWIND!中展示了Create Table
、Insert Data
的演练,可以参考一下。
Extension Methods
有时候我们会想要写个可以在全部的程式码片段使用的通用Method,这时LINQPad的Extension Method就派上用场了,在MyExtensions
這個Class中撰写Method就可以在每個程式碼片段中做使用(就像是LINQPad內建的Dump一样)。
- 在左下的区块中的
MyExtensions
的Tab>My Extensions,程式码区块会出現MyExtensions
的Class
2接着我们来加入Hello 到MyExtensions
中
- 3新开一个Query执行Method,会输出
Hello
字串
- 4现在我们再加一个
ConsoleWriteLine
- 5在刚刚的Query中呼叫
ConsoleWriteLine
,最后就会像下图一样
Extension Methods的好处在于你可以扩充自己的Infrastructure,来缩减每个程式码片段重复的处理。
小诀窍
储存可参考的程式码片段
有时候我们会常常参考某些好用的程式码,这时就会想要找个地方存起来等要的时候再拿出来。
在LINQPad中有储存程式码片段的功能:
- 在要储存的片段的Tab上按右鍵>Save(或ctrl+s)
- 储存后在左下角MyQueries就会看到刚刚储存的档案了。
快捷键表
在Help>Keyboard/Mouse Shortcuts
执行选取的程式码
选取想要执行的片段按下執行F5
就可以执行片段程式码
LINQPad extension methods
LINQPad自己有提供Dump,让开发者可以产出更清楚的结果,关于Dump的详细说明可以参考作者自己在StackOverflow的回答: LINQPad [extension] methods
结论
LINQPad是一个麻雀虽小,五脏俱全的开发工具,在这个章节中我们学到了如何运用这功能强大的工具,下个章节我们要来寻foreach中隐藏的秘密哦!
LINQPad 已经推出全新的中文网站www.linqpad.cn, 以及微信公众号。请关注,及时掌握最新资讯!