LINQPad

LINQPad

Introduction

I have used LINQPad on and off for years. LINQPad, a powerful tool designed for .NET developers, primarily known for testing LINQ queries, it is a versatile scripting environment that supports C#, F#, and VB.NET.

This blog post will illustrate its features through five comprehensive examples and, hopefully, you will become a fan of it too.

What is LINQPad?

LINQPad is more than just a tool for Language Integrated Query (LINQ); it’s a streamlined Integrated Development Environment (IDE) tailored for .NET developers.

Its primary purpose is to enable quick and efficient testing of LINQ queries, but its utility extends far beyond. It supports C#, F#, and VB.NET, allowing for the execution of code snippets, database queries, and even entire programs in a lightweight environment.

This makes it an ideal platform for experimenting, learning, and debugging.

You can download LINQPad from here: – https://www.linqpad.net/download.aspx

Features at a Glance

  • Efficient LINQ Testing: Quickly test LINQ queries across various data contexts.
  • Multi-Language Support: Compatible with C#, F#, and VB.NET.
  • Database Connectivity: Direct interaction with SQL and other databases.
  • Rich Output Formatting: Enhanced result viewing with custom visualisation.
  • Extensions and Snippets: Expand functionality with user-contributed extensions and reusable code snippets.

Example 1: Basic LINQ Query in LINQPad

void Main()
{
    // Define a simple array of numbers
    var numbers = new[] { 1, 2, 3, 4, 5 };

    // Use LINQ to filter even numbers
    var evenNumbers = from n in numbers
                      where n % 2 == 0
                      select n;

    // Output the results
    evenNumbers.Dump("Even Numbers");
}

In this example, LINQPad is used to filter even numbers from an array. It demonstrates the ease with which LINQ queries can be written and tested.

Example 2: Database Interaction

void Main()
{
    // Connect to a database context
    var db = new MyDataContext();

    // Query for recent orders within the last 30 days
    var recentOrders = db.Orders.Where(order => order.Date > DateTime.Now.AddDays(-30));

    // Display the query results
    recentOrders.Dump("Recent Orders");
}

This example showcases LINQPad’s ability to connect to a database and execute queries. It’s particularly useful for testing data retrieval logic.

Example 3: Dynamic LINQ

void Main()
{
    // Define a dynamic query string
    string dynamicQuery = "new (Name as FullName, Age)";

    // Sample data set
    var people = new[] { new Person("Alice", 30), new Person("Bob", 35) };

    // Execute a dynamic LINQ query
    people.AsQueryable().Select(dynamicQuery).Dump("Dynamic Query Results");
}

Dynamic LINQ in LINQPad allows for building queries using strings, offering a flexible approach to query construction.

Example 4: Scripting with C#

void Main()
{
    // Simple C# scripting
    Console.WriteLine("Exploring LINQPad!");

    // Additional C# code can be executed here
    // For instance, data manipulation or algorithm testing
}

LINQPad isn’t limited to LINQ; it’s a full-fledged environment for C# scripting. This example highlights its capability to run and test general C# code.

Example 5: Utilising LINQPad Extensions

void Main()
{
    // Sample JSON data
    var jsonData = "{\"name\":\"John\", \"age\":30}";

    // Use an extension method to convert JSON to XML
    jsonData.JsonToXml().Dump("Converted XML");
}

The extensibility is one of its strengths. In this example, a custom extension is used to convert JSON data to XML, showcasing how it can be tailored to specific needs.

Conclusion

LINQPad is a dynamic and versatile tool that is invaluable for .NET developers. It streamlines the process of writing, testing, and prototyping code, making it a vital part of the development toolkit.

Whether it’s executing complex LINQ queries, interacting with databases, or simply testing a piece of C# code, it offers a level of convenience and efficiency that is hard to match.

Embracing LINQPad can significantly enhance your coding workflow, whether you’re a beginner or an experienced developer.

Stephen

Hi, my name is Stephen Finchett. I have been a software engineer for over 30 years and worked on complex, business critical, multi-user systems for all of my career. For the last 15 years, I have been concentrating on web based solutions using the Microsoft Stack including ASP.Net, C#, TypeScript, SQL Server and running everything at scale within Kubernetes.

Finchett.com
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.