使用LINQ將列表分割成子列表
在C#中,我們經常會遇到需要將列表分割成較小塊或子列表的情況。實現此目標的一種方法是利用C#中強大的LINQ(語言集成查詢)擴展。
讓我們考慮您提供的示例。您有一個List<T>
,並且您想要創建一個List
或List<T>[]
,使得每個生成的列表包含原始列表中一定數量(例如,3)的連續項。
要使用LINQ解決此問題,您可以利用以下代碼:
<code class="language-csharp">public static List<List<T>> Split<T>(IList<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>
此代碼首先根據索引除以chunkSize
的結果對源列表中的元素進行分組。這會將它們分組為大小為chunkSize
的塊。然後,我們使用Select
運算符將每個組轉換為值列表,並使用ToList
運算符創建一個列表的列表。
例如,如果您有一個原始列表[a, g, e, w, p, s, q, f, x, y, i, m, c]
,並且chunkSize
為3,則生成的子列表將為[a, g, e]
、[w, p, s]
、[q, f, x]
、[y, i, m]
、[c]
。生成的列表的大小由原始列表中的項目數和分組操作中指定的塊大小決定。總的來說,這種基於LINQ的解決方案提供了一種有效的方法,可以根據基於索引的分隔符將列表分割成子列表。 代碼已修改為接受chunkSize
參數,使其更通用。
以上是如何使用c#中的linq將列表分成特定大小的訂書片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!