podzielenie listy ?

0

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 :)

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();
    }
}
0

Ja bym pomyślał o użyciu metod Skip i Take.
Albo w ogóle zrobił to "klasycznie", ze względu na wydajność.

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 :)

0

To oznacza, że mając obiekt-listę, możesz tę metodę wywołać na tym obiekcie:

List<int> numbers = ...
List<List<int>> splitNumbers = numbers.ChunkBy(10);

Poszukaj w Google: extension method.

1 użytkowników online, w tym zalogowanych: 0, gości: 1