Die hier gezeigte Erweiterungsmethode kann eine Auflistung in möglichst gleich große Teile spalten.
Benötigte Namespaces
System
System.Collections.Generic
System.Linq
/// <summary>
/// Spaltet eine Auflistung in möglichst gleich Große Teile.
/// </summary>
/// <typeparam name="T">Der Typ der Elemente in der Auflistung.</typeparam>
/// <param name="source">Die zu spaltende Quellliste.</param>
/// <param name="parts">Die Anzahl der Teile.</param>
/// <returns>Eine Auflistung von Teillisten aus <paramref name="source"/>.</returns>
/// <remarks>Sollte <paramref name="source"/> weniger Elemente enthalten als <paramref name="parts"/>, wird die zurück gegebene Liste nur so lang sein wie die Quellliste.</remarks>
public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> source, int parts)
{
if (parts <= 0)
throw new ArgumentOutOfRangeException("parts");
int i = 0;
return source.GroupBy(x => i++ % parts);
}
Kommentare zum Snippet