我在代码中使用了很多Linq查询,我正在寻找一个提供类似于LinqPad提供的格式化Dump()函数的库。 LinqPad的Dump()扩展方法非常好用,因为它可以很好地处理嵌套集合。
理想情况下,它会以纯文本打印出漂亮的表格,但我可以随意拼出HTML或其他格式正确的数据。
来自VS的ObjectDumper示例根本没有删除它。
答案 0 :(得分:20)
这就是我一直在使用的:
Special thanks to this thread (especially Pat Kujawa's & anunay's comments)
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;
}
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
您需要在项目中添加linqpad可执行文件作为参考以及System.IO
和System.Diagnostics
这将启动您的默认Web浏览器,显示linqpad将生成的确切输出。
答案 1 :(得分:4)
正如diceguyd30指出的那样,您实际上可以直接在代码中访问LINQPad可执行文件并让它自己生成HTML。如果您尝试将HTML作为正常执行程序的一部分输出到界面,这将最有效。
如果您的目的是生成可在程序运行时监视的调试数据,则另一个选项是使用Console.Write(object)
方法,然后将Console.Out
设置为可以智能地格式化对象的内容。例如,您可以从LINQPad引用您的可执行文件,并使用它来执行您正在调试的方法,LINQPad将处理任何Console.WriteLine(object)
调用,与调用object.Dump()
时相同。 / p>