利用LINQ高效分割列表
LINQ為.NET應用程序提供了一種簡潔而強大的數據處理方式,其中包括根據各種條件將列表分割成子列表的功能。
考慮以下問題:您有一個List<T>
,需要將其分割成若干個T
對象的子列表,每個子列表的大小由索引決定。例如,原始列表包含以下元素:
<code>[a, g, e, w, p, s, q, f, x, y, i, m, c]</code>
您希望得到的子列表為:
<code>[a, g, e], [w, p, s], [q, f, x], [y, i, m], [c]</code>
子列表的大小可以作為函數參數指定。
一種使用LINQ的解決方案如下:
public static List<List<T>> Split<T>(IList<T> source, int sublistSize) { return source .Select((x, i) => new { Index = i, Value = x }) .GroupBy(x => x.Index / sublistSize) .Select(x => x.Select(v => v.Value).ToList()) .ToList(); }
此代碼執行以下步驟:
GroupBy
方法按元素索引對源列表中的元素進行分組,每個組代表一個不同的子列表。 sublistSize
參數控制子列表大小。 Select
方法用於將每個組中的值提取到一個新的列表中。 ToList
將組轉換為列表的列表。 結果是一個List
,其中每個子列表包含來自原始列表的指定數量的元素,並根據項目索引進行分割。 通過傳入 sublistSize
參數,可以靈活控制子列表的大小。
以上是LINQ如何有效地將列表分為指定尺寸的訂訂列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!