Text menu and validation of the chosen item
Let’s suppose that perfectness is our goal :)

    static void Main(string[] args)
    {
        new Menu("Please select one of the following options to run:")
            .Option("Run Initial Data Import", () =&gt; Console.WriteLine("Importing..."))
            .Option("Nightly Maintenance", () =&gt; Console.WriteLine("I am the terror (that flaps in the night)!"))
            .Option("Exit")
            .Execute();
    }


Where:

public class Menu 
{
    public Menu(string prompt = "Please choose:")
        : this(prompt, Enumerable.Empty&lt;Option&gt;())
    {
    }

    Menu(string prompt, IEnumerable&lt;Option&gt; options)
    {
        Prompt = prompt;
        Options = options;
    }

    string Prompt { get; }
    IEnumerable&lt;Option&gt; Options { get; }

    public Menu Option(string name, Action action = null) =&gt;
        new Menu(Prompt, Options.Concat(new[] { new Option(name, action ?? (() =&gt; {})) }));

    public override string ToString() =&gt;
        Prompt + "\n\r" +
        string.Join("\n\r", Options.Select((o, i) =&gt; $"{i+1}. {o.Name}"));

    public void Execute() =&gt; Execute(Console.Out, Console.In);

    public void Execute(TextWriter writer, TextReader reader)
    {
        writer.WriteLine(this);
        int i;
        if (int.TryParse(reader.ReadLine(), out i) &amp;&amp; --i &gt;= 0 &amp;&amp; i &lt; Options.Count())
            Options.ElementAt(i).Execute();
        else
            Execute(writer, reader);
    }
}


And

class Option
{
    public Option(string name, Action action)
    {
        Name = name;
        Execute = action;
    }

    public string Name { get; }
    public Action Execute { get; }
}