Witajcie, jeszcze raz. Mam pytanie - w jaki sposób mogę podzielić elementy , np po 10 czy też 20 sztuk mając jakąś kolekcję - powiedzmy listę , która zawiera na przykład 150 elementów? Znając z góry ilość elementów, np 100 , mogę stworzyć 10 list i wrzucać tam po 10 elementów. Ale co w wypadku gdybym miał 10 000 lub wiele więcej elementów i chciał z nich stworzyć listy po 100? Do głowy przychodzi mi grupBy , ale nie wiem w jaki sposób na sztywno określić że ma to być 10 elemtnów. Z góry dzięki za pomoc :)
podzielenie listy ?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 475
1
Gotowy kod znaleziony na SO
/// <summary>
/// Helper methods for the lists.
/// </summary>
public static class ListExtensions
{
public static List<List<T>> ChunkBy<T>(this List<T> source, int chunkSize)
{
return source
.Select((x, i) => new { Index = i, Value = x })
.GroupBy(x => x.Index / chunkSize)
.Select(x => x.Select(v => v.Value).ToList())
.ToList();
}
}
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
0
Ja bym pomyślał o użyciu metod Skip i Take.
Albo w ogóle zrobił to "klasycznie", ze względu na wydajność.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 92
0
Somepublic, mógłbyś rzucić przykładem?
Poza tym , mógłby ktoś wytłumaczyć co oznacza zapis ? : "public static List<List<T>> ChunkBy<T>(this List<T> source, int chunkSize) "
Chciałem po prostu użyć metody dla zwykłej listy. Tak by zrobić z niej jakieś sublisty :)