LINQPad [扩展]方法

.net c# entity-framework linqpad linq-to-sql

有没有人有完整的LINQPad扩展方法和方法列表,例如

.Dump()

SubmitChanges()

一般承认的答案

LINQPad定义了两种扩展方法(在LINQPad.Extensions中),即Dump()Disassemble()Dump()使用LINQPad的输出格式化程序写入输出窗口并重载以允许您指定标题:

typeof (int).Assembly.Dump ();
typeof (int).Assembly.Dump ("mscorlib");

您还可以指定最大递归深度以覆盖默认的5个级别:

typeof (int).Assembly.Dump (1);              // Dump just one level deep
typeof (int).Assembly.Dump (7);              // Dump 7 levels deep
typeof (int).Assembly.Dump ("mscorlib", 7);  // Dump 7 levels deep with heading

Disassemble()将任何方法反汇编为IL ,以字符串形式返回输出:

typeof (Uri).GetMethod ("GetHashCode").Disassemble().Dump();

除了这两个扩展方法之外,LINQPad.Util中还有一些有用的静态方法。这些记录在自动完成中,包括:

  • Cmd - 执行shell命令或外部程序
  • CreateXhtmlWriter - 创建一个使用LINQPad的Dump()格式化程序的文本编写器
  • SqlOutputWriter - 返回写入SQL输出窗口的文本编写器
  • GetMyQueriesGetSamples - 返回表示已保存查询/样本的对象集合(例如,使用“编辑”|“全部搜索”执行搜索)
  • 突出显示 - 包裹对象,以便在倾倒时以黄色突出显示
  • HorizontalRun - 允许您在同一行上转储一系列对象

LINQPad还提供HyperLinq类。这有两个目的:第一个是显示普通的超链接:

new Hyperlinq ("www.linqpad.net").Dump();
new Hyperlinq ("www.linqpad.net", "Web site").Dump();
new Hyperlinq ("mailto:user@domain.com", "Email").Dump();

您可以将它与Util.HorizontalRun结合使用:

Util.HorizontalRun (true,
  "Check out",
   new Hyperlinq ("http://stackoverflow.com", "this site"),
  "for answers to programming questions.").Dump();

结果:

查看此站点以获取编程问题的答案。

HyperLinq的第二个目的是动态构建查询:

// Dynamically build simple expression:
new Hyperlinq (QueryLanguage.Expression, "123 * 234").Dump();

// Dynamically build query:
new Hyperlinq (QueryLanguage.Expression, @"from c in Customers
where c.Name.Length > 3
select c.Name", "Click to run!").Dump();

您也可以在LINQPad中编写自己的扩展方法。转到“我的查询”,然后单击名为“我的扩展”的查询。所有查询都可以访问此处定义的任何类型/方法:

void Main()
{
  "hello".Pascal().Dump();  
}

public static class MyExtensions
{
  public static string Pascal (this string s)
  {
    return char.ToLower (s[0]) + s.Substring(1);
  }
}

在4.46(.02)中引入了新的类和方法

  • DumpContainer(类)
  • OnDemand(扩展方法)
  • Util.ProgressBar(类)

此外,Hyperlinq类现在支持单击链接时将调用的Action委托,允许您在代码中对其作出反应,而不仅仅是链接到外部网页。

DumpContainer是一个类,它将一个块添加到输出窗口中,可以替换其内容。

注意!记得.Dump()DumpContainer本身放在适当的位置。

使用:

var dc = new DumpContainer();
dc.Content = "Test";
// further down in the code
dc.Content = "Another test";

OnDemand是一种扩展方法,它不会将其参数的内容输出到输出窗口,而是添加一个可点击的链接,单击该链接时将链接替换为参数的.Dump() ed内容。这对于有时需要的数据结构非常有用,这些数据结构成本高昂或占用大量空间。

注意!记得.Dump()在适当的位置调用OnDemand的结果。

要使用它:

Customers.OnDemand("Customers").Dump(); // description is optional

Util.ProgressBar是一个可以在输出窗口中显示图形进度条的类,可以在代码移动时更改。

注意!请记住.Dump()适当位置的Util.ProgressBar对象。

要使用它:

var pb = new Util.ProgressBar("Analyzing data");
pb.Dump();
for (int index = 0; index <= 100; index++)
{
    pb.Percent = index;
    Thread.Sleep(100);
}

热门答案

转储是一种全局扩展方法,SubmitChanges来自DataContext对象,它是System.Data.Linq.DataContext对象。

据我所知,LP只添加了Dump和Disassemble。虽然我强烈建议在Reflector中打开它,看看还有什么可以使用。其中一个更有趣的事情是LINQPad.Util命名空间,它内部有一些LINQPad使用的好东西。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因