Feedback

Liste in Listen mit Maximalgröße aufteilen

Sprache: C#

Diese generische Methode zerteilt eine Liste in mehrere Listen. Bsp: Übergeben wird eine Liste mit 91000 Einträgen: [code]var myList = new List<string>(); for (int i = 0; i < 91000; i++) { myList.Add(i.ToString()); } var chunks = SplitList(myList, 40000);[/code] Rückgabewert ist: Liste1 mit 40000 Einträgen Liste2 mit 40000 Einträgen Liste3 mit 11000 Einträgen
/// <summary>
/// Splitting a generic list into multiple lits
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list">List to split</param>
/// <param name="chunkSize">maximal size of items per list</param>
/// <returns></returns>
public static List<List<T>> SplitList<T>(List<T> list, int chunkSize)
{
    var returnList = new List<List<T>>();
    var index = 0;
    while (index < list.Count)
    {
        var count = list.Count - index > chunkSize ? chunkSize : list.Count - index;
        returnList.Add(list.GetRange(index, count));
        index += chunkSize;
    }
    return returnList;
}
/// <summary>
/// Splitting a generic list into multiple lits
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list">List to split</param>
/// <param name="chunkSize">maximal size of items per list</param>
/// <returns></returns>
public static List<List<T>> SplitList<T>(List<T> list, int chunkSize)
{
    var returnList = new List<List<T>>();
    var index = 0;
    while (index < list.Count)
    {
        var count = list.Count - index > chunkSize ? chunkSize : list.Count - index;
        returnList.Add(list.GetRange(index, count));
        index += chunkSize;
    }
    return returnList;
}