Teilen Sie die Liste in Untereinheiten der angegebenen Größe auf
Dieser Artikel löst ein häufiges Problem: wie man eine bestimmte Liste in mehrere kleinere Unterlisten aufteilt, die jeweils eine vordefinierte Anzahl von Elementen enthalten. Bestehende Methoden führen häufig dazu, dass die Unterlisten größer sind als erwartet.
Um dieses Problem zu lösen, empfehlen wir die Verwendung einer Erweiterungsmethode, die in der Lage ist, die Quellliste in Unterlisten einer bestimmten Größe aufzuteilen. Diese Methode heißt ChunkBy
und nutzt die Aggregations- und Projektionsfunktionen von LINQ, um das gewünschte Ergebnis zu erzielen.
Bitte sehen Sie sich den folgenden Codeausschnitt an:
<code class="language-csharp">/// <summary> /// 列表辅助方法。 /// </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(); } }</code>
Diese Methode durchläuft die Elemente der Quellliste und ordnet jedem Element seinen Index zu. Anschließend gruppiert es die Elemente basierend auf dem Elementindex dividiert durch die Blockgröße. Schließlich wird die Gruppe in eine Unterliste projiziert, die die Elementwerte enthält.
Wenn beispielsweise eine Liste mit 18 Elementen in Unterlisten mit jeweils 5 Elementen aufgeteilt wird, ist das Ergebnis eine Liste mit 4 Unterlisten, die wie folgt verteilt sind: 5-5-5-3.
Hinweis: In .NET 6 erleichtern LINQ-Verbesserungen die Aufteilung, wie im folgenden Beispiel gezeigt:
<code class="language-csharp">const int PAGE_SIZE = 5; IEnumerable<Movie[]> chunks = movies.Chunk(PAGE_SIZE);</code>
Das obige ist der detaillierte Inhalt vonWie kann ich eine Liste effizient in kleinere Unterlisten einer bestimmten Größe aufteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!