Computing a Cartesian product or Combinations with LINQ

Code Example - Computing a Cartesian product or Combinations with LINQ

                
                        var s1 = new[] {a, b}; 
var s2 = new[] {x, y, z}; 
var product = 
    from first in s1 
    from second in s2 
    select new[] { first, second };