Per iniziare va bene anche la guida di Microsoft
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/lambda-expressions
In breve: sono tutti strumenti utili per rendere il codice più compatto e leggibile, anche se non sono realmente necessari
Ad esempio
int[] numeri = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
double media = numeri.Average();
double deviazione_standard = 0.0;
for (int i = 0; i < numeri.Length; i++)
deviazione_standard += numeri[i] * numeri[i];
deviazione_standard = Math.Sqrt(deviazione_standard / numeri.Length - media * media);
potresti scriverlo come
int[] numeri = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
double media = numeri.Average();
double deviazione_standard = Math.Sqrt(numeri.Average(n => n * n) - media * media);