C# Language Using SelectMany instead of nested loops


Given 2 lists

var list1 = new List<string> { "a", "b", "c" };
var list2 = new List<string> { "1", "2", "3", "4" };

if you want to output all permutations you could use nested loops like

var result = new List<string>();
foreach (var s1 in list1)
    foreach (var s2 in list2)

Using SelectMany you can do the same operation as

var result = list1.SelectMany(x => list2.Select(y => $"{x}{y}", x, y)).ToList();