首頁 >後端開發 >C++ >如何使用c#中的linq將列表分成特定大小的訂書片?

如何使用c#中的linq將列表分成特定大小的訂書片?

Barbara Streisand
Barbara Streisand原創
2025-02-01 22:46:12933瀏覽

How Can I Split a List into Sublists of a Specific Size Using LINQ in C#?

使用LINQ將列表分割成子列表

在C#中,我們經常會遇到需要將列表分割成較小塊或子列表的情況。實現此目標的一種方法是利用C#中強大的LINQ(語言集成查詢)擴展。

讓我們考慮您提供的示例。您有一個List<T>,並且您想要創建一個ListList<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn