使用LINQ將列表分割成子列表
經常需要根據分隔符將對象列表分成較小的子列表。在本例中,我們感興趣的是使用對象索引作為分隔符來創建具有指定大小的子列表。
考慮以下示例:需要將List<someobject>
分成多個列表,每個列表按順序包含原始列表中的三個項目。期望的輸出為:
為了實現此分割,我們可以使用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(); // 将List的IEnumerable转换为List的List }</code>
首先按索引分組項目,然後將每個組轉換為列表,我們有效地將原始列表分割成所需大小的子列表。此技術為使用LINQ分割列表提供了一種簡潔明了的解決方案。
以上是如何使用LINQ將列表拆分為特定尺寸的子列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!