C# 集合分组,将一个集合分若干组

 static void Main(string[] args)
        {
            List<int> vs = new List<int>();
            for (int i = 0; i < 101; i++)
            {
                vs.Add(i);
            }
            //分成3组
            SpliteSourceByCount(vs, 3);
            //根据页面大小分组 20
            SpliteSourceBySize(vs,20);
        }

        /// <summary>
        /// 将集合若干组
        /// </summary>
        /// <param name="source">数据集</param>
        /// <param name="pageSiez">每一组大小</param>
        private static List<List<int>> SpliteSourceBySize(List<int> source, int pageSiez)
        {
            int listCount = (source.Count() - 1) / 100 + 1;//计算组数
            List<List<int>> pages = new List<List<int>>();
            for (int pageIndex = 1; pageIndex <= listCount; pageIndex++)
            {
                var page = source.Skip((pageIndex - 1) * pageSiez).Take(pageSiez).ToList();
                pages.Add(page);
            }
            return pages;
        }

        /// <summary>
        /// 将集合若干组
        /// </summary>
        /// <param name="source">数据集</param>
        /// <param name="count">组数</param>
        private static List<List<int>> SpliteSourceByCount(List<int> source, int count)
        {
            int pageSiez = source.Count() / count;//取每一页大小
            int remainder = source.Count() % count;//取余数
            List<List<int>> pages = new List<List<int>>();
            for (int pageIndex = 1; pageIndex <= count; pageIndex++)
            {
                if (pageIndex != count)
                {
                    var page = source.Skip((pageIndex - 1) * pageSiez).Take(pageSiez).ToList();
                    pages.Add(page);
                }
                else
                {
                    var page = source.Skip((pageIndex - 1) * pageSiez).Take(pageSiez + remainder).ToList();
                    pages.Add(page);
                }
            }
            return pages;
        }

猜你喜欢

转载自www.cnblogs.com/houzf/p/12951000.html
今日推荐