Delegates come in handy for a variety of reasons.
They can be used for a variety of things, including filtering data sequences. In this case, you'd use a predicate delegate, which takes only one parameter and returns true or false based on the delegate's implementation.
Here's a stupid example from which you can probably derive something more useful:
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
    static void Main()
    {
        List<String> names = new List<String>
        {
            "Nicole Hare",
            "Michael Hare",
            "Joe Hare",
            "Sammy Hare",
            "George Washington",
        };
        // Here I am passing "inMyFamily" to the "Where" extension method
        // on my List<String>.  The C# compiler automatically creates 
        // a delegate instance for me.
        IEnumerable<String> myFamily = names.Where(inMyFamily);
        foreach (String name in myFamily)
            Console.WriteLine(name);
    }
    static Boolean inMyFamily(String name)
    {
        return name.EndsWith("Hare");
    }
}