Jak używać Func <> i Action <> podczas projektowania aplikacji?

Wszystkie przykłady, które mogę znaleźć na temat Func <> i Action <> sąprosty jak w poniższym miejscu, gdzie widziszw jaki sposób technicznie działają, ale chciałbym zobaczyć je w przykładach, w których rozwiązują problemy, których wcześniej nie udało się rozwiązać lub można je rozwiązać tylko w bardziej złożony sposób, tj. wiem, jak one działają i widzę, że sązwięzły i potężny, więc chcę je zrozumieć wwiększy sens jakiego rodzaju problemów rozwiązują i jak mogę je wykorzystać przy projektowaniu aplikacji.

W jaki sposób (wzory) używasz Func <> i Action <> do rozwiązywania rzeczywistych problemów?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestFunc8282
{
    class Program
    {
        static void Main(string[] args)
        {
            //func with delegate
            Func<string, string> convert = delegate(string s)
            {
                return s.ToUpper();
            };

            //func with lambda
            Func<string, string> convert2 = s => s.Substring(3, 10);

            //action
            Action<int,string> recordIt = (i,title) =>
                {
                    Console.WriteLine("--- {0}:",title);
                    Console.WriteLine("Adding five to {0}:", i);
                    Console.WriteLine(i + 5);
                };

            Console.WriteLine(convert("This is the first test."));
            Console.WriteLine(convert2("This is the second test."));
            recordIt(5, "First one");
            recordIt(3, "Second one");

            Console.ReadLine();

        }
    }
}

questionAnswers(3)

yourAnswerToTheQuestion