Como "fatiar" ("chunk") Lists ou Enumerable em pedaços menores em C#

jbcoliveira

João Batista Costa Oliveira

Posted on June 7, 2022

Como "fatiar" ("chunk") Lists ou Enumerable em pedaços menores em C#

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} }
Enter fullscreen mode Exit fullscreen mode
💖 💪 🙅 🚩
jbcoliveira
João Batista Costa Oliveira

Posted on June 7, 2022

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related