LINQPad 是一个软件实用程序,旨在作为的一部分使用。NET 应用程序开发。它用于使用 LINQ 交互查询 SQL 数据库,以及交互编写 C# 代码,而不需要集成开发环境,如 Visual Studio。LINQPad 支持 VB.NET、SQL 和 F#语言。LINQPad 还支持实体框架、LINQ 到对象、LINQ 到 SQL 和 LINQ 到 XML 的互操作性。
该产品有三个版本:LINQPad 2.x(针对。. NET Framework 3.5),LINQPad 4(针对。NET Framework 4.0/4.5)和 LINQPad 5(对于。NET 框架 4.6)。每个版本都有四个版本:免费版、专业版、开发者版和高级版。
LINQPad 为付费许可版本启用了额外的功能。其中一些功能包括完整的 C#/F#/VB 自动完成和工具提示、C#/VB 的代码大纲和格式、内置和自定义代码片段以及完整的 NuGet 集成。
LINQPad 是一个客户端/服务器应用程序,可以作为一个客户端和多个服务器工作。在这种情况下,LINQPad 用户界面是客户端,对于要执行的每个查询,LINQPad 都会创建一个单独的服务器。对于客户端和服务器之间的通信,LINQPad 使用定制的通信层,该通信层使用 Windows 共享内存运行。
LINQPad 在用户界面中使用来自几个软件发行商的第三方库。其中包括 Actipro 的 SyntaxEditor、夏普开发项目、微软罗斯林和 NRefactory。这些发行商的库作为嵌入式资源包含在 LINQPad 中,因此它作为单个可执行文件提供。产品的所有更新都下载到应用程序的数据文件夹中。每次启动时,LINQPad 都会检查应用程序的数据文件夹中是否有其后来签名的版本。
LINQPad 软件可以从以下位置下载:
下载 LINQPad 后,双击LINQPad4Setup.exe(或LINQPad5Setup.exe文件开始安装。
安装过程由一系列对话框指导,这些对话框允许您为命令行支持选择程序的位置文件夹、文件关联、图标创建和环境变量设置。当 LINQPad 安装完成时,会创建一组文件夹和文件,包括查询、插件、代码片段、数据上下文驱动程序、连接、默认引用和用户首选项。
LINQPad 也可以作为一个可移植的应用程序来部署。为了完成这个任务,应该在 u 盘中创建一个特殊的目录结构,包括其中的 linqpad.exe 文件。
要开始使用 LINQPad,请双击窗口桌面上的图标。这将启动 LINQPad 用户界面,这是将完成大部分工作的客户端应用程序。
出于本书的目的,我们确定了 LinkPad 用户界面中的 14 个图形元素:LinkPad 主菜单、连接的树视图区域、查询和示例树视图区域、查询代码选项卡窗口区域、查询代码选项卡标题、添加新选项卡按钮、执行查询按钮、停止执行按钮、结果视图类型按钮、语言选择器组合框、连接选择器组合框、关闭选项卡按钮、高级功能激活链接和状态栏。
编辑器窗口是可以自定义的用户界面元素之一。为此,从编辑菜单中选择首选项命令,可以在首选项对话框的编辑器选项卡中更改窗口设置。出于本书的目的,使用了 Segoe UI 字体,也显示了代码行号。字体大小自定义不可用,因为 LINQPad 允许用户使用 Ctrl+加号(增加)或 Ctrl+减号(减少)来增加或减少字体大小,或者在按住 Ctrl 键的同时使用鼠标滚轮。
使用 LINQPad 时,一个基本概念是术语查询。查询是一段可以立即执行的代码。所有编写的查询都显示在名为“我的查询”的树视图节点下。实际上,LinkPad 将查询存储在名为 LinkPad 查询的文件夹中,该文件夹位于用户的文档文件夹中。点击用户界面中的设置文件夹超链接,在首选项对话框中浏览新文件夹,即可更改该文件夹的位置。本书讨论的所有查询都保存在一个名为的文件夹中。
LINQPad 允许您通过使用术语来搜索查询。这可以通过点击用户界面中我的查询树视图节点上的转到超链接来完成。然后,您可以在导航到查询对话框中键入术语,LINQPad 将显示与该术语匹配的所有查询。
LINQPad 查询可以用 10 种不同的编程模式编写:C# 表达式、C# 语句、C# 程序、VB 表达式、VB 语句、VB 语句、VB 程序、SQL、ESQL、F#表达式、F#程序。这些语言都可以在位于编辑器窗口顶部的语言选择器组合框中选择。
所有查询文件名都与。linq 文件扩展名。在内部,每个查询文件的开头都会添加一个 XML 格式的头。这个头告诉 LINQPad 使用哪种编程语言来编译查询,查询用来检索数据的连接,以及查询中引用了哪些程序集和命名空间。编辑器窗口中不显示该 XML 标题。
您可以通过单击添加连接超链接,在连接的树视图区域管理与 SQL 服务器的连接。然后,屏幕上显示的“选择数据上下文”对话框允许您选择将使用哪个 LINQPad 驱动程序。出于本书的目的,所有查询都选择了 LINQ 到 SQL 驱动程序(这是默认设置)选项。
选择 LINQPad 驱动程序后,将显示 LINQPad 连接对话框来设置连接的参数。假设在本地计算机上安装了一个配置了 SQL 身份验证安全模式的 SQLEXPRESS 实例,则创建了一个 Microsoft SQL Server 连接。
当选择“SQL 身份验证”时,LINQPad 使用服务器名称后跟句点和已验证用户的名称来命名连接。如果选择了 Windows 身份验证,则连接的名称仅包含服务器名称。此外,上下文菜单可用于 LINQPad 用户界面中显示的所有连接。当用户右键单击某个连接的名称时,会出现此菜单。该菜单包含一组用于管理连接的命令,包括连接属性或连接刷新。
LINQPad 可以用来创建使用默认的 LINQ 到 SQL 驱动程序的数据库查询。我们在本书讨论的样本中使用了名为 uspostalcodes 的数据库。该数据库是使用“选择数据上下文”对话框以及“LINQ 到 SQL 连接”对话框创建的。因为没有办法用 LINQ-To-SQL 创建数据库实体,所以使用了微软的 SQL Server Management Studio 来创建数据库表,并用数据填充它们。
本书讨论的 LINQ-To-SQL 方法包括 Take 方法和 OrderBy 方法,前者返回具有特定行数的行集,后者对方法返回的行进行排序。其中一些方法需要 lambda 表达式才能正常工作。lambda 表达式由一个参数和一个表达式组成,表达式接受参数并使用它返回值。术语λ表达式来自λ演算,这是一种用于定义函数的数学符号。本书中讨论的使用 lambda 表达式的方法有:OrderBy
(对行进行排序)、Where
(根据条件表达式筛选行)、Sum
(总结给定列的值)、Average
(从给定列的一系列值中获取平均值)和GroupBy
(根据给定列的值对行进行分组)。
LINQPad 提供了一个名为PredicateBuilder
的特殊类。当需要复杂的筛选条件时,此类旨在简化查询编写。类通过提供一组用作逻辑比较运算符的特殊方法来解决这个问题。因为PredicateBuilder
是一个泛型类,所以它可以接收连接使用的数据库的任何实体引用。PredicateBuilder
类的价值主张在于,当类的实例被传递给任何 LINQ-To-SQL 方法时,它能够动态地构建任何 lambda 表达式。表达式是使用And
或Or
方法传递给类实例的值创建的。在使用实例之前,应该重复调用这两种方法。要在查询中使用PredicateBuilder
类,您必须在使用它的任何查询中添加对该类的引用。这可以通过按下 F4 并选中出现在查询属性对话框中的包含预测生成器复选框来完成。
LINQPad 最有价值的特性之一是能够将其用作测试和原型工具。LINQPad 可以为此运行 C#、F#和 VB 语言的代码。这些语言中的每一种都可以作为单行表达式、几个句子和一个程序来执行。在所有情况下,给定代码的性能可以通过从状态栏读取执行所消耗的时间来衡量。这个特性允许开发人员在产品发布前改进代码。LINQPad 还允许在查询中使用自定义程序集。通过从查询菜单中选择查询属性命令,或按下 F4 键,可以参考这些组件。用户可以从系统中安装的程序集中挑选一个程序集,或者在本地文件系统中浏览一个自定义程序集文件,或者两者兼而有之。LinkPad 高级版的用户也可以引用 NuGet 包,而自由版的用户只能引用 LinkPad 示例中使用的那些包。
当查询中引用自定义或系统程序集时,用户应该通过显式限定名声明属于这些程序集的类或方法。也就是说,要使用位于System.Windows.Forms
命名空间中的Button
控件,用户应该编写System.Windows.Forms.Button
,以便为该类创建一个实例。为了简化代码的编写方式,LINQPad 允许您使用位于查询属性对话框中的附加名称空间导入选项卡将名称空间导入查询。
LINQPad 使用一个名为Dump
的方法来显示查询产生的输出。此方法呈现任何类型的对象,如 Windows 窗体控件、网站位置的图像或 LINQ-SQL 查询的结果。
LINQPad 附带的另一个有用的类是Util
类。此类有许多有用的方法和属性,可用于与查询交互,以便运行系统命令、获取列表中所有可用的查询、突出显示查询结果、将结果导出到 CSV 文件或显示进度条。