为了账号安全,请及时绑定邮箱和手机立即绑定

LINQ分区列表分为8个成员的列表

LINQ分区列表分为8个成员的列表

慕娘9325324 2019-11-19 10:23:08
一个人如何使用LINQ来获取一个列表并将其分解为一个列表列表,从而在每第8个条目上对原始列表进行分区?我想像这样的事情会涉及“跳过”和/或“接听”,但是我对LINQ还是很陌生。编辑:使用C#/ .Net 3.5Edit2:该问题的措词与其他“重复”问题不同。尽管问题相似,但该问题的答案更好:“接受的”答案非常可靠(带有yield陈述),以及乔恩·斯凯特的建议使用MoreLinq(“其他”问题中不建议)。有时重复是好的,因为重复会迫使您重新检查问题。
查看完整描述

3 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

使用以下扩展方法将输入分成子集


public static class IEnumerableExtensions

{

    public static IEnumerable<List<T>> InSetsOf<T>(this IEnumerable<T> source, int max)

    {

        List<T> toReturn = new List<T>(max);

        foreach(var item in source)

        {

                toReturn.Add(item);

                if (toReturn.Count == max)

                {

                        yield return toReturn;

                        toReturn = new List<T>(max);

                }

        }

        if (toReturn.Any())

        {

                yield return toReturn;

        }

    }

}


查看完整回答
反对 回复 2019-11-19
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

在MoreLINQ中,我们有这样一种方法作为Batch方法:


// As IEnumerable<IEnumerable<T>>

var items = list.Batch(8);

要么


// As IEnumerable<List<T>>

var items = list.Batch(8, seq => seq.ToList());


查看完整回答
反对 回复 2019-11-19
  • 3 回答
  • 0 关注
  • 618 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信