LINQPad 常见问题

常见问题分类

非技术性问题

谁是LINQPad的作者?

LINQPad由Joe Albahari编写和维护,他也是 C# in a Nutshell的作者。 Joe长期作为被邀演讲者出席会议 ,他还延续获得过15次 微软MVP 奖。

常规使用

LINQPad作者?

LINQPad由Joe Albahari编写和维护,他也是 C# in a Nutshell的作者。 Joe长期作为被邀演讲者出席会议 ,他还延续获得过15次 微软MVP 奖。

如何显示多语句代码片段的执行结果?

请参考 LINQPad 中的“5分钟入门介绍(5-Minute Induction)”,这个范例详细的解释了上述问题。

我能否引用自定义程序集和 NuGet 包?

是的 - 请按F4键来添加引用。 NuGet包管理器仅在开发者版本和高级版本中提供 (但您仍然可以在免费版本中执行包含NuGet引用的查询,并重新下载引用的软件包)。

我是否可以引用程序集的内部类型?

当然可以。只需将以下程序集属性添加到您希望 LINQPad 访问的项目中:

[InternalsVisibleTo("LINQPadQuery")]

LINQPad 6以及更高版本则无需此步骤。LINQPad 5或之前版本 , 你需要做的步骤为 Edit | Preferences | Advanced 并且 Allow LINQPad to access internal types of other assemblies

(LINQPad 6+): 我的查询需要一个 appsettings.json 文件,我该如何告诉 LINQPad 使用它呢?

只需引用它: 按F4键,然后点击 Add Reference

提示: 在 LINQPad 6 及更高版本中,您引用的任何非程序集文件都会被复制到查询的输出文件夹中,因此您也可以引用文本文件、XML 文件和本机 DLL 等文件。

(LINQPad 5): 我引用的自定义程序集需要从应用程序配置文件(app.config)中读取设置。如何在 LINQPad 的查询中使用该程序集?

最方便的方法就是按 (F4)打开 Query Properties(查询属性)对话框,然后选择 app.config选项卡。

您也可以在LINQPad.exe所在目录新建名为 linqpad.config的文件。 文件中的内容将应用于所有查询 (除非被“Query Properties(查询属性)对话框中的设置覆盖)。此外,不要将 linqpad.config 与 linqpad.exe.config 混淆:

  • linqpad.config 用于配置查询
  • linqpad.exe.config 用于配置LINQPad GUI程序

能否在 LINQPad 中运行多线程和异步代码(async/await)?

LINQPad 既能够运行多线程代码也可以执行异步代码。LINQPad 明确支持 C# 的异步函数, Reactive Extension以及Microsoft DataFlow。 LINQPad内置的范例中就有相关演示 - 请按键 Ctrl+F1 搜索 threadingasync

数据库查询

为什么 LINQPad 以复数形式表示表属性和子表关联属性? 我能关闭该功能么?

以复数形式表示表属性以及子表关联属性 (父表则使用单数形式)可以使查询更加自然,并减少与 .NET 类型名称的潜在冲突。您可以在添加数据库连接时取消选中“Pluralize”选项来关闭此功能(如果连接已经创建,右键单击连接以编辑连接属性)。

为什么 LINQPad 将列名的首字母设置为大写?我能关掉该功能吗?

LINQPad 将属性名称首字母大写以避免与 C# 关键字冲突。如需关闭此功能可在添加数据库连接时取消“Capitalize(首字母大写)” 的勾选(也可以右键单击编辑现有连接属性)

为什么LINQPad 区分大小写,而 SQL 并不是!

LINQPad 是否区分大小写取决于在 Language 下拉菜单中所选择的语言。其中 C#和 F# 区分大小写,而 VB与 SQL 则不区分大小写。(注意, 如果数据库的 collation 是区分大小写的, 那么数据库的表名和列名也是区分大小写的。)

当在查询 SQL Server 时,LINQPad 让我可以选择 LINQ-to-SQL 或 EF Core。哪个更好?

(请注意 LINQPad 6 及更高版本 使用 特殊增强版的 LINQ-to-SQL)

LINQ-to-SQL 在数据库架构较大时速度更快。 它的 冷启动开销 低于 EF 或 EF CORE的一半。 因此使用LINQ-to-SQL可以降低 新查询延迟。 在使用 LINQPad 进行 SSMS 式数据探索时这是很重要的。 LINQPad 内置的LINQ-to-SQL 驱动程序历经多年积累, 支持存储过程、表-值函数、 SQL Azure 的多身份认证, 以及全保真 SQL 日志((其输出可以直接粘贴到 SMSS 中使用)。您甚至可以跨多个数据库进行查询, 并从链接服务器中执行数据表查询

EF Core的优势在于它不仅支持 SQL Server,还支持 MySQL、Oracle、SQLite 和 PostgreSQL。此外,如果您需要完全兼容 EF Core 的特性和功能,那么使用这个驱动程序是合理的。

使用 EF Core,您还可以 查询您在 Visual Studio 中定义的 Entity Framework 模型

我是否可以对 XML和JSON 数据源或 SQL 表进行查询?

当然,LINQPad 还特别支持可视化 XML 和 JSON 数据。您可以查看 LINQPad 内置的示例 - 转到 'Samples' 菜单,展开 'C# in a Nutshell',然后选择第10章。

我已经购买了LINQPad Premium 高级版本,并希望编写跨数据库查询。我如何做到这一点?

有两种方法。 最简单的方法是拖拽法: 请按住 Ctrl 键,同时 将其他数据库从 Schema Explorer(架构浏览器)中 拖放到查询编辑器中。 如需在查询中访问这些附加数据库,请使用database.table模式, 例如 Northwind.Regions.Take(100)。注意,这些数据库 必须位于同一服务器上。

第二种方法是在编辑连接属性时列出其他数据库。您还可以在该对话框中选择链接服务器上的数据库。 具体操作如下:

  1. 1. 添加一个新的 LINQ to SQL 连接。
  2. 2. 选择 Specify New or Existing Database(指定新数据库或现有数据库) 并选择待查询的主数据库。
  3. 3. 点击 Include Additional Databases(包括其他数据库) 复选框并选择要包含的的其他数据库。您也可以在此对话框中选择链接的服务器中的数据库。

专业版和高级版许可

我知道一个单用户许可证可以同时激活最多三台计算机。 一旦达到此限制,我是否可以将许可证从一台计算机转移到另一台计算机?

是的-您最多可以在 12 个月内执行 6 次许可证转移 (多用户许可证则以此类推)。做法是, 从help(帮助)菜单中 选择 'Remove License(移除许可证)' 。 如果您忘记了具体的安装机器, 还可以 远程移除未使用机器上的许可证

我经常格式化并重新安装 Windows。当我重新激活 LINQPad 的许可证时, 会不会浪费一次激活?

大多数情况下,LINQPad 在硬件相同时不会额外扣除激活次数。(如果有任何问题, 您可以远程移除旧机器上的激活)。

是否可以激活虚拟机?

当然可以。现在单用户许可证除提供三个物理激活外,还增加了三个可转移的虚拟激活(多用户许可证则以此类推)。虚拟激活将锁定在虚拟机及其宿主机上。 它支持 Microsoft Virtual PC、Hyper-V、Azure VirtualMachines、VMWare Server和 VMWare Workstation。

如果我购买了一个双用户的许可证,我是否会得到6个激活?

是的。

我拥有团队版或企业版许可证, 并希望自动激活 LINQPad。有没有方法通过命令行激活 LINQPad?

可以:

LINQPad.exe -activate=YOUR-ACTIVATION-CODE

或者,激活所有用户:

LINQPad.exe -activateall=YOUR-ACTIVATION-CODE

如果使用 LINQPad 安装程序, 也可以使用 /activate=开关/activateall=开关调用LINQPadxSetup.exe 在安装过程中激活 LINQPad。 您还可以使用的 /silent开关 进行静默安装。

在使用静默安装时可使用 /mergetasks="lprunpath"将 LINQPad 目录添加到 PATH 环境变量中。如果需要使用命令行工具 (lprun) 则上述操作是很重要的。

我的电脑没有网络连接, 是否可以进行离线激活?

可以, 需要几个手动步骤

我们公司的开发人员在三个不同的城市工作。团队和企业许可证是否在多个地点上有效?

是的。单个团队和企业许可证可以在多达十个不同的地点使用。此处“地点”指通常的营业地点。在家办公的员工不计入计数.

我能找回丢失了激活码么?

点此 找回丢失的激活码。

非盈利、教堂或慈善机构是否有折扣?

没有。除了为减轻贫困/疾病,促进人权,实施动物福利或进行环境保护而注册的慈善机构外,上述机构一般都有资格获得免费许可证。此类情况请 联系客户服务

安全问题与隐私

我注意到, 在发布更新时, LINQPad 会自动进行自我修补。如何确保更新可信, 并在传输过程中未经篡改? 我的公司对安全要求很高!

更新通过 HTPPS 获取,并且使用 RSA 签名。LINQPad 将拒绝没有有效签名的更新。LINQPad 的更新和许可服务器托管在 Microsoft Azure 上,遵循最佳方案,具有多层安全性。

LINQPad 收集的信息有哪些?

可以通过这里了解详情 EULA.

当保存包含 SQL 认证的连接时, LINQPad 是否会以普通文本存储密码?

绝对不会。LINQPad 将会使用 Windows 数据保护 API 对密码进行加密。

自定义 & 可扩展性

LINQPad提供了哪些扩展机制?

首先,可以 在 My Extensions(我的扩展) (快捷键 Shift+Ctrl+Y)中编写扩展方法(以及你希望在查询之间共享的任何其他代码)。

其次, 您还可以通过 LINQPad 中的 Dump 来控制自定义类型可以显示的字段和属性。除此之外, 还可以完全接管渲染功能。详细内容请 - 点此 查看。

第三, LINQPad 支持编写 自定义 Data Context 驱动 或实现 自定义的可视化工具

我希望在演示中使用 LINQPad。是否可以放大显示查询代码?是否支持无线翻页笔?

是的。 可以通过 Ctrl键+鼠标滚轮操作,或者 Ctrl+]和 Ctrl+[ 来缩放字体。 (您还可以调整Windows字体大小,LINQPad 可以感知DPI的设置。)

如需使用无线翻页笔,请选择 Edit 菜单中的 Preferences。单击“Advanced”选项卡,并启用演示文稿模式(Enable PresentationMode)。 就可以使用 罗技无线翻页笔 来进行如下操作:

  • 在“My Queries(我的查询)或“Samples(范例)”中,移动到下一个/上一个查询
  • 运行查询
  • 隐藏查询结果窗口

您还可以在查询中输入以下语句来显示特定的 PowerPoint 页面:

// Second argument = slide number to start at
PowerPoint.ShowSlide (@"c:\docs\MyPresentation.ppt", 1);

请注意,必须安装 PowerPoint(微软不再提供免费的 PowerPoint Viewer)。祝您的演讲顺利!