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

Gar*_*ack 14 linq linqpad

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

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

来自VS的ObjectDumper示例根本不会删除它.

dic*_*d30 20

这就是我一直在使用的:

特别感谢这个主题(特别是Pat Kujawa的&anunay的评论)

C#(直接来自Pat Kujawa的评论(虽然我让它自己返回以便它像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;
}
Run Code Online (Sandbox Code Playgroud)

VB(我的转换,因为我在VB应用程序中需要它):

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
Run Code Online (Sandbox Code Playgroud)

您需要将linqpad可执行文件添加为您的项目的引用,以及System.IOSystem.Diagnostics

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

  • 为了简化LINQPad.exe的引用,现在为Framework 3.5和4.0版本构建了任何AnyCPU版本:www.linqpad.net/beta.aspx (7认同)