ArrayFactory.CartesianProduct C# (CSharp) Method

CartesianProduct() private static method

private static CartesianProduct ( IEnumerable, dimensions ) : IEnumerable>
dimensions IEnumerable,
return IEnumerable>
		private static IEnumerable<IEnumerable<T>> CartesianProduct<T>(
		IEnumerable<IEnumerable<T>> dimensions)
		{
			return dimensions.Aggregate(
				(IEnumerable<IEnumerable<T>>)new T[][] { new T[0] },
				(acc, input) =>
					from prevDimension in acc
					from item in input
					select prevDimension.Concat(new T[] { item }));
		}
	}