Heim > Backend-Entwicklung > C++ > Wie kann ich eine Liste in C# effizient in Unterlisten einer bestimmten Größe unterteilen?

Wie kann ich eine Liste in C# effizient in Unterlisten einer bestimmten Größe unterteilen?

DDD
Freigeben: 2025-01-18 04:41:07
Original
725 Leute haben es durchsucht

How Can I Efficiently Chunk a List into Sublists of a Specific Size in C#?

Aufteilen einer Liste in kleinere Unterlisten einer bestimmten Größe in C#

Die ursprüngliche Funktion splitList zielte darauf ab, eine Liste in kleinere Listen mit jeweils 30 Elementen aufzuteilen. Es gab jedoch Mängel, die zu Unterlisten mit inkonsistenter Größe führten.

Verbesserte Lösung mithilfe einer Erweiterungsmethode:

Ein robusterer Ansatz besteht darin, eine C#-Erweiterungsmethode zu erstellen:

<code class="language-csharp">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();
    }
}</code>
Nach dem Login kopieren

Funktionalität erklärt:

Diese Erweiterungsmethode unterteilt eine Liste (source) effizient in Unterlisten eines bestimmten chunkSize. Es nutzt LINQ:

  1. Indizierung und Wertepaarung: Select((x, i) => new { Index = i, Value = x }) erstellt einen anonymen Typ, der den Index und den Wert jedes Elements enthält.

  2. Gruppierung nach Chunk: GroupBy(x => x.Index / chunkSize) gruppiert Elemente basierend auf ihrem Index geteilt durch chunkSize. Dadurch wird sichergestellt, dass Elemente innerhalb desselben Chunks gruppiert werden.

  3. Listenerstellung: Select(x => x.Select(v => v.Value).ToList()) wandelt jede Gruppe zurück in eine Liste des ursprünglichen Elementtyps.

  4. Endgültige Liste der Listen: ToList() erstellt die endgültige Liste mit den unterteilten Unterlisten.

Praktische Anwendung:

Um diese Methode zu verwenden, um Unterlisten der Größe 30 aus einer Liste mit dem Namen locations zu erstellen:

<code class="language-csharp">List<List<YourElementType>> chunkedLists = locations.ChunkBy(30);</code>
Nach dem Login kopieren

Anschauliches Beispiel:

Wenn locations 144 Elemente enthält, enthält chunkedLists korrekterweise 5 Unterlisten mit den Größen 30, 30, 30, 30 und 24.

Zukünftige C#-Verbesserung:

Beachten Sie, dass .NET 6 zu diesem Zweck eine integrierte Chunk-Methode einführt, die den Prozess weiter vereinfacht:

<code class="language-csharp">const int PAGE_SIZE = 5;
IEnumerable<Movie> chunks = movies.Chunk(PAGE_SIZE);</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich eine Liste in C# effizient in Unterlisten einer bestimmten Größe unterteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage