1 minute read

A long time ago (Before AI, before agentic engineering), we created code by hand. As a .NET developer, one of the most time-consuming things was crafting complex LINQ queries for the database. I’d execute the app, hit a breakpoint, and start playing with different LINQ expressions in a debugger.

Then I had to create a full Visual Studio project just to test a small piece of logic: a .csproj file, a Program.cs, model definitions, connection strings. All the boilerplate.

Then I found LINQPad.

It let me test code on the fly. No project. No boilerplate. Just a blank .lpd file and a database connection.

The .Dump() method

The most iconic feature of LINQPad is the .Dump() extension method. Instead of Console.WriteLine(), you call .Dump() on any object, collection, or variable:

var customers = db.Customers
    .Where(c => c.Age > 30)
    .Select(c => new { c.Name, c.Email, OrderCount = c.Orders.Count() })
    .Dump();

db.Orders.Where(o => o.Total > 100)
    .GroupBy(o => o.CustomerId)
    .Dump();

LINQPad renders the result in a formatted table or tree view. Inspecting complex nested objects becomes instant, no Console.WriteLine() spam, no manual string formatting.

It’s still a great tool

Sure, IA tools can generate LINQ expressions now. But you still need:

  • Ad-hoc exploration — “What does this table actually look like?” → LINQPad.
  • Debugging data — “Why did this query slow down?” → LINQPad with a live connection.
  • One-off migrations — “Move this column to another table” → LINQPad script.
  • Reporting — “Show me top customers by region for last quarter” → LINQPad dashboard.

IA writes the code. LINQPad tests it against your real database, instantly.

Conclusion

LINQPad is a must-have for any .NET developer who works with data. It’s not just a query tool — it’s a thinking companion. When you can type and see results in under three seconds, your relationship with data changes. You stop guessing and start exploring.