c#把集合根据某个数字进去分组
电脑版发表于:2019/7/19 13:45
实现一个根据某个数字分组的扩展方法
这种方法的作用可以用在批量添加的时候分组去批量添加,还有其他情况需要分段解析等
/// <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; }
解析的时候就是一个双循环。外面的循环就是有多少个组,里边的循环就是一组多少个