tnblog
首页
登录

c#把集合根据某个数字进去分组

103人阅读 2019/7/19 13:45 评论:0 手机 收藏 关注
分类: .NET


实现一个根据某个数字分组的扩展方法

这种方法的作用可以用在批量添加的时候分组去批量添加,还有其他情况需要分段解析等

    /// <summary>
    /// 根据传一个数把集合分组,用的时候可以用foreach去遍历他,每次循环就是一组
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="source"></param>
    /// <param name="num"></param>
    /// <returns></returns>
    public static List<List<T>> GroupByNum<T>(this IEnumerable<T> source, int num)
    {
        if (source == null)
            throw new Exception("未把对象引用到对象的实例");

        List<List<T>> res = new List<List<T>>();
        int i = 1, beforenum = num;
        List<T> li = new List<T>();
        foreach (T t in source)
        {
            li.Add(t);
            if (i == num) //出现了一个分组
            {
                res.Add(li);//添加一个分组
                li = new List<T>();//重新实例化一个对象
                num = num + beforenum; //循环到下次分组时在添加
            }
            i++;
        }
        if (li.Count < beforenum) { res.Add(li); }//主要是最后一次如果不够分组就要添加
        return res;
    }

解析的时候就是一个双循环。外面的循环就是有多少个组,里边的循环就是一组多少个 




评价
很多事不是看到了希望才去努力,而是努力了才能看到希望
文章
6
粉丝
16
评论
8
分类
16
{{item.ArticleTitle}}
{{item.BlogName}} : {{item.Content}}