Pedaço LINQ

Resumo : neste tutorial, você aprenderá como usar o Chunk()método LINQ para dividir uma sequência em um conjunto de sequências menores, chamadas de pedaços.

Introdução ao método LINQ Chunk()

O Chunk()método permite dividir uma sequência em um conjunto de sequências menores chamadas pedaços.

Aqui está a sintaxe do Chunk()método:

IEnumerable<TSource[]> Chunk<TSource> (
    IEnumerable<TSource> source, 
    int size
);Linguagem de código:  C#  ( cs )

O Chunk()método leva dois parâmetros:

  • sourceé a sequência a ser fragmentada.
  • sizeé o tamanho máximo de cada pedaço.

O Chunk()método retorna um IEnumerable<TSource[]>que contém os elementos da sequência de entrada divididos em pedaços de tamanho.

O Chunk()método é um método de avaliação lenta, o que significa que ele não cria os pedaços até que você acesse cada pedaço. Pode ser útil se você tiver uma sequência grande, pois evita que toda a sequência seja carregada na memória de uma só vez.

O Chunk()método é útil nos seguintes cenários:

  • Para processar uma sequência em lotes.
  • Para paralelizar o processamento de uma coleção.
  • Para armazenar uma coleção em um banco de dados em partes.

Exemplo do método LINQ Chunk()

O exemplo a seguir usa o Chunk()método para dividir uma coleção de 25 números em 3 partes, cada parte tem no máximo 10 números:

using static System.Console;

var numbers = new List<int>(Enumerable.Range(1, 25));
var chunks = numbers.Chunk(10);

foreach (var chunk in chunks)
{
    foreach (var item in chunk)
    {
        Write($"{item}, ");
    }
    WriteLine();
}Linguagem de código:  C#  ( cs )

Saída:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25,Linguagem de código:  texto simples  ( texto simples )

Neste exemplo, os pedaços contêm um IEnumerable<int[]>, onde cada matriz int[] contém 10 números.

Resumo

  • Use Chunk()o método LINQ para dividir uma sequência em um conjunto de pedaços menores.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *