Ce face Chunk
Chunk(marime) întoarce o secvență de tablouri T[], fiecare cu cel mult marime elemente, în ordinea originală. Ultimul tablou conține ce a rămas. E util pentru trimiterea datelor în loturi (inserări în baza de date, cereri către un API cu limită), pentru paginare în memorie sau pentru afișarea pe coloane.
Dimensiunea trebuie să fie cel puțin 1, altfel metoda aruncă ArgumentOutOfRangeException. Ca toate metodele LINQ care întorc secvențe, este evaluată la parcurgere.
Parametri
| Parametru | Descriere |
|---|---|
size |
Numărul maxim de elemente dintr-un grup (minim 1). |
Ce returnează
IEnumerable<T[]>.
Exemple
Exemplul 1: Elevi împărțiți în grupe
var elevi = Enumerable.Range(1, 7).Select(i => $"E{i}");
int numar = 1;
foreach (string[] grupa in elevi.Chunk(3))
Console.WriteLine($"Grupa {numar++}: {string.Join(", ", grupa)}");
Rezultat
Grupa 1: E1, E2, E3
Grupa 2: E4, E5, E6
Grupa 3: E7
Exemplul 2: Loturi pentru import
Fiecare lot este un tablou, așa că are Length și indexare de la coadă cu ^1.
int[] iduri = Enumerable.Range(1, 10).ToArray();
foreach (int[] lot in iduri.Chunk(4))
Console.WriteLine($"Lot de {lot.Length}: {lot[0]}-{lot[^1]}");
Rezultat
Lot de 4: 1-4
Lot de 4: 5-8
Lot de 2: 9-10
Greșeli frecvente
- Presupunerea că toate grupurile au aceeași mărime: ultimul poate fi mai mic.
Chunk(0)aruncăArgumentOutOfRangeException.
Comenzi înrudite
Skip / Take (paginare): Take ia primele n elemente, Skip le sare; împreună fac paginare. TakeWhile/SkipWhile se opresc la prima condiție falsă.