Search code examples
linqpadobject-dumper

Is there a library that provides a formatted Dump( ) function like LinqPad?


I work with a lot of Linq queries in my code, and I'm looking for a library that provides a formatted Dump() function similar to what LinqPad offers. LinqPad's Dump() extension method is really quite nice, because it handles nested collections very well.

Ideally, it would print out pretty tables in plain text, but I'd be ok with spitting out HTML or other nicely formatted data.

The ObjectDumper sample from VS does not cut it at all.


Solution

  • This is what I've been using:

    Special thanks to this thread (especially Pat Kujawa's & anunay's comments)

    C# (Straight from Pat Kujawa's comment (though I made it return itself so that it chains like linqpad's version does)):

    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 (my conversion since I needed it in a VB app):

    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
    

    You will need to add the linqpad executable as a reference in your project as well as System.IO and System.Diagnostics

    This launches your default web browser showing the exact output that linqpad would generate.