此篇为LINQPad海外用户文章转载!
热爱工具
我在 10 多年前开始使用 LINQPad,它跟着我完成了无数的机器和系统安装。
它是我在每台新 PC 上安装的前 5 个程序之一。
我现在是所谓的全栈开发人员,主要关注 .NET 中的服务器端内容。我看到了从 FW2.0 到现在的 Core3.0 的发展,LINQPad 一直在我身边,帮助我学习语言,探索框架,原型想法和(sic)为生产中的数据运行快速补丁。所有的喜悦与悲伤,我们都一起经历。
对于那些从未使用过它的人,快速介绍一下。
地点和方式
LINQPad 可从https://www.linqpad.cn/下载,它有不同的风格,具体取决于您的需求:用于特定框架版本/带安装程序/不带安装程序/用于 x64 程序集(AnyCPU)/等等...
对于您可以拥有免费版本中的任何一个:免费版本的限制与智能感知、NuGet 集成以及我们在 Visual Studio 等 IDE 中习惯使用的一般编码自动化有关。
您只需下载它并启动 .exe,就可以了。
用户界面
一旦你打开,你会看到类似下图:
这非常简单:右侧是主代码编辑器,左侧是您可以在查询中使用的连接列表和已保存查询的列表。
让我们首先检查代码部分。
写代码
“C# 表达式”默认为空查询(可通过编辑 -> 首选项 -> 查询覆盖)。
可用选项包括 C# 和 VB、SQL、ESQL 甚至 F# 中的表达式、语句和程序。
如果我们处于表达式模式,这意味着您只能编写一个 C# 表达式,其输出将在执行时自动转储。
执行查询 (F5) 将打开带有单个表达式结果和其他有趣选项卡的输出面板。例如,您可以从这里检查由您的代码(如果有)、中间语言甚至编译器分析的语法树生成的底层 SQL 查询。
使用单个表达式没有很多事情要做,因此通常您将使用“C# 程序”样式。切换到它会改变模板,创建一个 void Main() 方法来表示我们查询代码的入口点。
为了达到相同的结果(在结果面板中显示当前日期时间),我们现在必须明确选择要转储的值。
LINQPad 有一组扩展方法,可以让我们与 LINQPad 本身进行交互,其中最常见的是 Dump() 方法:
void Main()
{
DateTime.Now.Dump();
}
这将像以前一样生成 DateTime.Now 的字符串表示形式,但现在我们可以与变量交互并转储中间结果:
void Main()
{
var date = DateTime.Now;
date.Dump();
date.AddDays(3).Dump();
date.AddMonths(1).Dump();
}
Dump() 方法很强大,非常强大,有很多重载和选项。对于这个快速介绍,我唯一要强调的是输出基本上是数据的 HTML 表示,数据的类型本身决定了我们看到的内容。
原型制作
我使用 LINQPad 的主要原因是编写快速的代码片段,我可以比在 Visual Studio 中进行 100 倍的交互测试:还有一步一步的调试,所以体验非常接近 IDE。
您不限于查询的 Main() 方法,您可以在它之外创建您需要的类和接口。
例如:
void Main()
{
List<User> users = new List<User>();
users.Add(new User("John", "Doe"));
users.Add(new User("John", "Wick"));
users.Dump();
}
public class User
{
public User(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
public string FirstName { get; set; }
public string LastName { get; set; }
}
是一个完全合法的查询。
导入您的程序集
假设您有一个用 .NET 框架或 .NET 核心编写的应用程序,它对其他库有一些依赖关系,例如MyApp.DataModel
,保存域类和接口。您实际上可以在 LINQPad 查询中导入它们,只需转到 Query -> References and Properties:从这里您可以导入系统程序集,浏览由您的项目生成的特定 DLL 或(需使用 LINQPad 的专业版)连接到 NuGet 提要.
您可以通过“其他命名空间导入”选项卡在查询中添加要导入的命名空间列表。
此时,您将能够在查询中使用导入程序集中的所有内容,从而快速探索和测试功能。
结论
这个介绍只是掌握了 LINQPad 的所有功能的表面,但是应该已经很清楚这个工具在工作场景中或者只是在学习语言和框架本身的新概念时会变得多么重要(看看左下角的“样品”标签)。以正确的方式使用它大大提高了我的整体工作效率。
在以后的文章中,我将深入研究 Dump() 方法、数据连接以及与 Visual Studio 的更好集成。