利用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的解决方案如下:
<code class="language-csharp">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(); }</code>
此代码执行以下步骤:
GroupBy
方法按元素索引对源列表中的元素进行分组,每个组代表一个不同的子列表。 sublistSize
参数控制子列表大小。Select
方法用于将每个组中的值提取到一个新的列表中。ToList
将组转换为列表的列表。结果是一个List
,其中每个子列表包含来自原始列表的指定数量的元素,并根据项目索引进行分割。 通过传入 sublistSize
参数,可以灵活控制子列表的大小。
以上是LINQ如何有效地将列表分为指定尺寸的订订列表?的详细内容。更多信息请关注PHP中文网其他相关文章!