Skip to content

Debugging Linq in the Visual Studio Command Window

Having made the jump from Visual Studio 2013 to Visual 2017. I missed some features, added to Vs2015, that helped me out the other day while trying to debug an issue with a collection in C#

In Visual Studio 2015 and greater, you can query collections using linq in the command window

Lets suppose we have the following code. I know its not the greatest but it should illustrate the point.

private List<ItemRow> GenerateItems()
{
    List<ItemRow> items = new List<ItemRow>();
    Random r = new Random();
    const string message = "The Quick Brown Fox Jumped Over the Lazy Dog";

    var total = r.Next(75, 100);
    for (int i = 0; i < total; i++)
    {
        var chosenDate = DateTime.Now.AddDays(r.Next(180));
        items.Add(new ItemRow{
            Id = i,
            Name = new string(message.ToCharArray().OrderBy(s=>(r.Next(2) %2) == 0).ToArray()),
            ChosenDate = new DateTime(chosenDate.Year, chosenDate.Month, chosenDate.Day),
            Amount = (0.4m * r.Next(50))});
        }

    return items;
}

If we add a break point on the return items line

Linq debug code window

we can begin to query the items collection in the command window

We can call a Count

Linq debug code window

Big Deal! Okay lets try filter&

Linq debug code window

There is nothing to stop you using the watch window and moving through the hierachy

Linq debug Autos window

but if you need to see the rows togther it can be useful

Linq debug code window

Bear in mind if your collection has more than 100 items you are limited to only the first 100 items and you can experience a slight delay with more complicated queries.

But for a quick data check it can be a little time saver

Posted in Development