Hoje vou compartilhar um pequeno trecho de código em C# que permite que você "fatie" ou (crie um "chunk" de) uma lista em n listas menores utilizando Linq.
O código "fatia" um Enumerable em C# em um tamanho especificado, se a lista dada não puder ser dividida uniformemente, o pedaço final conterá os elementos restantes.
using System.Collections.Generic;
using System.Linq;
public static class ListHelper{
public static List<List<T>> ChunkList<T>(IEnumerable<T> data, int size)
{
return data
.Select((x, i) => new { Index = i, Value = x })
.GroupBy(x => x.Index / size)
.Select(x => x.Select(v => v.Value).ToList())
.ToList();
}
}
//Exemplo
List<int> numList = new List<int> { 1, 2, 3, 4, 5 };
ListHelper.ChunkList(numList, 3); // { {1, 2, 3}, {4, 5} }
Top comments (0)