Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个库提供像LinqPad这样的格式化转储()函数?_Linq_Linqpad - Fatal编程技术网

是否有一个库提供像LinqPad这样的格式化转储()函数?

是否有一个库提供像LinqPad这样的格式化转储()函数?,linq,linqpad,Linq,Linqpad,我在代码中使用了很多Linq查询,我正在寻找一个库,它提供了一个格式化的Dump()函数,类似于LinqPad提供的函数。LinqPad的Dump()扩展方法非常好,因为它可以很好地处理嵌套集合 理想情况下,它会以纯文本打印出漂亮的表格,但我可以输出HTML或其他格式良好的数据 VS中的ObjectDumper示例根本没有剪切它。这就是我一直在使用的: C#(直接根据Pat Kujawa的评论(尽管我让它自己返回,以便像linqpad的版本一样连锁)): 公共静态T转储(此T o){ var

我在代码中使用了很多Linq查询,我正在寻找一个库,它提供了一个格式化的Dump()函数,类似于LinqPad提供的函数。LinqPad的Dump()扩展方法非常好,因为它可以很好地处理嵌套集合

理想情况下,它会以纯文本打印出漂亮的表格,但我可以输出HTML或其他格式良好的数据


VS中的ObjectDumper示例根本没有剪切它。

这就是我一直在使用的:

C#(直接根据Pat Kujawa的评论(尽管我让它自己返回,以便像linqpad的版本一样连锁)):

公共静态T转储(此T o){
var localUrl=Path.GetTempFileName()+“.html”;
使用(var writer=LINQPad.Util.CreateXhtmlWriter(true))
{
作者:写(o);
File.WriteAllText(localUrl,writer.ToString());
}
Process.Start(localUrl);
返回o;
}
VB(我的转换,因为我在VB应用程序中需要它):

公共模块LinqDebugging
公共函数转储(Of T)(ByVal o As T)As T
Dim localUrl=Path.GetTempFileName()+“.html”
使用writer=LINQPad.Util.CreateXhtmlWriter(True)
写作(o)
File.WriteAllText(localUrl,writer.ToString())
终端使用
Process.Start(localUrl)
返回o
端函数
端模块
您需要在项目中添加linqpad可执行文件作为参考以及
System.IO
System.Diagnostics


这将启动默认的web浏览器,显示linqpad将生成的确切输出。

正如diceguyd30所指出的,您实际上可以直接在代码中访问linqpad可执行文件,并让它自己生成HTML。如果您试图将HTML作为程序正常执行的一部分输出到接口,那么这将是最有效的


如果您的目的是生成可以在程序运行时监视的调试数据,另一个选项是使用
控制台.Write(object)
方法,然后将
控制台.Out
设置为可以智能地格式化对象的内容。例如,您可以从LINQPad引用可执行文件,并使用它执行正在调试的方法,LINQPad将处理任何
控制台。WriteLine(object)
调用与调用
object.Dump()

相同的调用,以使引用LINQPad.exe更容易,现在框架3.5和4.0版本都有任何AnyCPU版本:www.linqpad.net/beta.aspxI想知道在您自己的代码中使用此转储方法是否违反了til eula?From:用法您可以使用商业或非商业应用程序或库重新分发未修改版本的LINQPad可执行文件,其唯一目的是允许最终用户运行LINQPad。用于其他目的的重新分发需要许可方的书面许可。我建议仅在调试问题时使用此功能。无论何时我们构建最终产品,LINQPad都会在项目参考中列为“不包括”。您可能希望这样:
public static T Dump<T>(this T o) {
    var localUrl = Path.GetTempFileName() + ".html";
    using (var writer = LINQPad.Util.CreateXhtmlWriter(true))
    {
        writer.Write(o);
        File.WriteAllText(localUrl, writer.ToString());
    }
    Process.Start(localUrl);
    return o;
}
Public Module LinqDebugging
    <System.Runtime.CompilerServices.Extension()>
    Public Function Dump(Of T)(ByVal o As T) As T
        Dim localUrl = Path.GetTempFileName() + ".html"
        Using writer = LINQPad.Util.CreateXhtmlWriter(True)
            writer.Write(o)
            File.WriteAllText(localUrl, writer.ToString())
        End Using
        Process.Start(localUrl)
        Return o
    End Function
End Module