首頁 >後端開發 >C++ >如何使用LINQ有效地將列表分為具有相等大小的標準列表?

如何使用LINQ有效地將列表分為具有相等大小的標準列表?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-02-01 22:31:10719瀏覽

How to Efficiently Split a List into Sublists of Equal Size Using LINQ?

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

在編程中,將列表分割成子列表是一種常見的操作。在C#中,一種高效的方法是利用LINQ(語言集成查詢)的功能。讓我們探討如何使用LINQ將列表分割成大小相等的子列表。

假設您需要將一個對象列表分成大小為三的子列表。為此,我們可以使用以下代碼:

<code class="language-csharp">public static List<List<T>> Split<T>(IList<T> source)
{
    return source
        .Select((x, i) => new { Index = i, Value = x })
        .GroupBy(x => x.Index / 3)
        .Select(x => x.Select(v => v.Value).ToList())
        .ToList();
}</code>

這段代碼首先將列表中的每個元素與其索引關聯起來。隨後,它根據索引除以三的結果對元素進行分組。此分組創建大小相等的子列表。最後,它將每個組中的值提取到一個列表的列表中。

為了舉例說明這個過程,讓我們假設我們有以下原始列表:

<code class="language-csharp">List<string> originalList = new List<string> { "a", "g", "e", "w", "p", "s", "q", "f", "x", "y", "i", "m", "c" };</code>

通過調用Split函數,每三個元素一組將存儲在一個結果列表的列表中的單獨子列表中:

<code class="language-csharp">List<List<string>> resultList = Split(originalList);</code>

resultList將包含以下子列表:

<code>[["a", "g", "e"], ["w", "p", "s"], ["q", "f", "x"], ["y", "i", "m"], ["c"]]</code>

使用LINQ簡潔高效的語法,我們演示瞭如何方便地將列表分割成指定大小的子列表。這種方法為各種數據操作場景提供了一種通用的解決方案。

以上是如何使用LINQ有效地將列表分為具有相等大小的標準列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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