C# LINQPad[extension]方法

C# LINQPad[extension]方法,c#,.net,entity-framework,linq-to-sql,linqpad,C#,.net,Entity Framework,Linq To Sql,Linqpad,是否有人拥有LINQPad扩展方法和方法的完整列表,例如 .Dump() 提交更改() LINQPad定义了两种扩展方法(在LINQPad.Extensions中),即Dump()和Disassemble()Dump()使用LINQPad的输出格式化程序写入输出窗口,并重载以允许您指定标题: typeof(int.Assembly.Dump(); typeof(int).Assembly.Dump(“mscorlib”); 还可以指定最大递归深度以覆盖默认的5个级别: typeof(int)

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

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

typeof(int.Assembly.Dump();
typeof(int).Assembly.Dump(“mscorlib”);
还可以指定最大递归深度以覆盖默认的5个级别:

typeof(int).Assembly.Dump(1);//只倾倒一层深
typeof(int).Assembly.Dump(7);//倾倒7层深
typeof(int).Assembly.Dump(“mscorlib”,7);//倾卸7层深,带有航向
反汇编()将任何方法反汇编到
IL
,以字符串形式返回输出:

typeof(Uri).GetMethod(“GetHashCode”).discompose().Dump();
除了这两种扩展方法之外,LINQPad.Util中还有一些有用的静态方法。这些记录在自动完成中,包括:

  • Cmd-执行shell命令或外部程序
  • CreateXhtmlWriter-创建使用LINQPad的Dump()格式化程序的文本编写器
  • SqlOutputWriter-返回写入SQL输出窗口的文本编写器
  • GetMyQueriesGetSamples-返回表示保存的查询/样本的对象集合(例如,使用Edit | search All执行搜索)
  • 高亮显示-包装对象,使其在转储时以黄色高亮显示
  • HorizontalRun-允许您在同一行上转储一系列对象
LINQPad还提供HyperLinq类。这有两个目的:第一个是显示普通超链接:

newhyperlinq(“www.linqpad.net”).Dump();
新的Hyperlinq(“www.linqpad.net”,“网站”).Dump();
新Hyperlinq(“mailto:user@domain.com“,”电子邮件“).Dump();
您可以将其与
Util.HorizontalRun
结合使用:

Util.HorizontalRun(true,
“退房”,
新Hyperlinq(“http://stackoverflow.com“,“本网站”),
“获取编程问题的答案。”).Dump();
结果:

查看编程问题的答案。

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

//动态构建简单表达式:
新的Hyperlinq(QueryLanguage.Expression,“123*234”).Dump();
//动态生成查询:
新的Hyperlinq(QueryLanguage.Expression,@)来自客户中的c
其中c.Name.Length>3
选择c.Name,“单击以运行!”).Dump();
您还可以在LINQPad中编写自己的扩展方法。转到“我的查询”并单击名为“我的扩展”的查询。所有查询都可以访问在此定义的任何类型/方法:

void Main()
{
“hello”.Pascal().Dump();
}
公共静态类MyExtensions
{
公共静态字符串Pascal(此字符串为s)
{
返回char.ToLower(s[0])+s.Substring(1);
}
}
在4.46(.02)中:

  • 垃圾箱(类)
  • OnDemand(扩展方法)
  • Util.ProgressBar(类)
此外,Hyperlinq类现在支持在单击链接时调用的委托,允许您在代码中对其作出反应,而不仅仅是链接到外部网页

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

注意记住将
.Dump()
转储容器本身放置在适当的位置

使用:

var dc=new DumpContainer();
dc.Content=“测试”;
//在代码的下面
dc.Content=“另一个测试”;
OnDemand
是一种扩展方法,它不会将其参数的内容输出到输出窗口,而是添加一个可单击的链接,当单击该链接时,该链接将替换为参数的
.Dump()
ed内容。这对于有时需要的昂贵或占用大量空间的数据结构非常有用

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

要使用它:

Customers.OnDemand(“Customers”).Dump();//描述是可选的
Util.ProgressBar
是一个可以在输出窗口中显示图形ProgressBar的类,它可以随着代码的移动而更改

注意记住将Util.ProgressBar对象放置在适当的位置

要使用它:

var pb=new Util.ProgressBar(“分析数据”);
pb.Dump();

for(int index=0;indexDump是一个全局扩展方法,submitchange来自DataContext对象,它是System.Data.Linq.DataContext对象

据我所知,LP只添加转储和反汇编。尽管我强烈建议在Reflector中打开它,看看还有什么可以使用。更有趣的事情之一是LINQPad.Util名称空间,它有一些LINQPad内部使用的优点。

第1部分,共2部分
除了众所周知的
myQuery.Dump(“Query result:”)
之外,还要提到的另一个特性是
Util
类:它包含许多非常方便的方法(我已经提到了其中的一些方法,但还有很多)

同样有趣的是,您可以修改
Dump()
的工作方式

最后,我将向您展示如何使用
SubmitChanges()
SaveChanges()
使更改永久化(即插入、更新、删除LINQ查询),以及如何访问LinqPad的内部连接对象

最后,我将向您展示如何在LinqPa内部创建简单的2d图形