Method Combine
- Namespace
- Gamelogic.Extensions.Algorithms
- Assembly
- Gamelogic.Extensions.dll
Combine<T1, T2, TResult>(IGenerator<T1>, IGenerator<T2>, Func<T1, T2, TResult>)
Combines the specified generators by applying a result selector function to the elements of each generator.
public static IGenerator<TResult> Combine<T1, T2, TResult>(IGenerator<T1> generator1, IGenerator<T2> generator2, Func<T1, T2, TResult> resultSelector)Parameters
- generator1IGenerator<T1>
- The first generator. 
- generator2IGenerator<T2>
- The second generator. 
- resultSelectorFunc<T1, T2, TResult>
- The result selector function. 
Returns
- IGenerator<TResult>
- A new generator 
Type Parameters
- T1
- The type of elements of the first generator. 
- T2
- The type of elements of the second generator. 
- TResult
- The type of the elements of the result generator. 
Examples
The following will code will add the elements of two generators to form its elements.
var generator1 = Generator.Count(3); //generates 0 1 2 0 1 2 0 1 2...
var generator2 = Generator.Count(2); //generates 0 1 0 1 0 1 0 1 0...
var generator = Generator.Combine(generator1, generator2, (x, y) => x + y);
	//generates 0 2 2 1 1 3 0 2 2...</code></pre>
Exceptions
- ArgumentNullException
- generator1 or generator2 or resultSelector 
- ArgumentNullException
- generator1is null.
- ArgumentNullException
- generator2is null.
- ArgumentNullException
- resultSelectoris null.
Combine<T1, T2, T3, TResult>(IGenerator<T1>, IGenerator<T2>, IGenerator<T3>, Func<T1, T2, T3, TResult>)
Combines the specified generators by applying a result selector function to the elements of each generator.
public static IGenerator<TResult> Combine<T1, T2, T3, TResult>(IGenerator<T1> generator1, IGenerator<T2> generator2, IGenerator<T3> generator3, Func<T1, T2, T3, TResult> resultSelector)Parameters
- generator1IGenerator<T1>
- The first generator. 
- generator2IGenerator<T2>
- The second generator. 
- generator3IGenerator<T3>
- The third generator. 
- resultSelectorFunc<T1, T2, T3, TResult>
- The result selector function. 
Returns
- IGenerator<TResult>
- A new generator 
Type Parameters
- T1
- The type of elements of the first generator. 
- T2
- The type of elements of the second generator. 
- T3
- The type of elements of the third generator. 
- TResult
- The type of the elements of the result generator. 
Exceptions
- ArgumentNullException
- generator1is null.
- ArgumentNullException
- generator2is null.
- ArgumentNullException
- generator3is null.
- ArgumentNullException
- resultSelectoris null.
Combine<T1, T2, T3, T4, TResult>(IGenerator<T1>, IGenerator<T2>, IGenerator<T3>, IGenerator<T4>, Func<T1, T2, T3, T4, TResult>)
Combines the specified generators by applying a result selector function to the elements of each generator.
public static IGenerator<TResult> Combine<T1, T2, T3, T4, TResult>(IGenerator<T1> generator1, IGenerator<T2> generator2, IGenerator<T3> generator3, IGenerator<T4> generator4, Func<T1, T2, T3, T4, TResult> resultSelector)Parameters
- generator1IGenerator<T1>
- The first generator. 
- generator2IGenerator<T2>
- The second generator. 
- generator3IGenerator<T3>
- The third generator. 
- generator4IGenerator<T4>
- The fourth generator. 
- resultSelectorFunc<T1, T2, T3, T4, TResult>
- The result selector function. 
Returns
- IGenerator<TResult>
- A new generator 
Type Parameters
- T1
- The type of elements of the first generator. 
- T2
- The type of elements of the second generator. 
- T3
- The type of elements of the third generator. 
- T4
- The type of elements of the fourth generator. 
- TResult
- The type of the elements of the result generator. 
Exceptions
- ArgumentNullException
- generator1is null.
- ArgumentNullException
- generator2is null.
- ArgumentNullException
- generator3is null.
- ArgumentNullException
- generator4is null.
- ArgumentNullException
- resultSelectoris null.
Combine<TSource, TResult>(IEnumerable<IGenerator<TSource>>, Func<IList<TSource>, TResult>)
Makes a generator that combines the elements of specified generators.
public static IGenerator<TResult> Combine<TSource, TResult>(IEnumerable<IGenerator<TSource>> generators, Func<IList<TSource>, TResult> resultSelector)Parameters
- generatorsIEnumerable<IGenerator<TSource>>
- The generators. 
- resultSelectorFunc<IList<TSource>, TResult>
- The result selector. 
Returns
- IGenerator<TResult>
- A new generator. 
Type Parameters
- TSource
- The type of elements of the source generators. 
- TResult
- The type of elements this generator will generate. 
Exceptions
- ArgumentNullException
- generators 
- ArgumentException
- Cannot contain null elements;generators