C# 如何将List拆分成多个子集合?

hckeep 2014-07-17 11:28:33
List<string> list = new List<string>();
for (int i = 1; i < 95; i++)
{
list.Add(i.ToString());
}
如何将list拆分成10个子集合?
...全文
6585 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
踏雪无痕1V1 2017-01-22
  • 打赏
  • 举报
回复
/// <summary> /// List帮助类 /// </summary> public static class ListHelper { /// <summary> /// 按指定数量对List分组 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="list"></param> /// <param name="groupNum"></param> /// <returns></returns> public static List<List<T>> GetListGroup<T>(this List<T> list, int groupNum) { List<List<T>> listGroup = new List<List<T>>(); for (int i = 0; i < list.Count(); i += groupNum) { listGroup.Add(list.Skip(i).Take(groupNum).ToList()); } return listGroup; } }
zsy18846172612 2016-08-17
  • 打赏
  • 举报
回复
引用 5 楼 phommy 的回复:
var result = list.GroupBy(i => int.Parse(i) % 10).Select(g => g.ToList()).ToList(); 上边的误把你的类型给改了= = 用这个
请问如果按每个list元素9个的话怎么写啊?
YoungHappyGIS 2015-12-16
  • 打赏
  • 举报
回复
引用 9 楼 duanzi_peng 的回复:
[quote=引用 3 楼 hckeep 的回复:] 2楼 怎样写的?

 List<List<string>> listGroup = new List<List<string>>();
            int j = 10;
            for (int i = 0; i < list1.Count; i += 10)
            {
                List<string> cList = new List<string>();
                cList = list1.Take(j).Skip(i).ToList();
                j +=10;
                listGroup.Add(cList);
            }
[/quote] 这个正是我想要的,3q
hckeep 2014-07-17
  • 打赏
  • 举报
回复
按照顺序平均拆,每个集合固定数量
lindping 2014-07-17
  • 打赏
  • 举报
回复
你按照什么规则去拆呢? 集合怎么排序,按顺序平均拆,还是随便拆,只要凑够10?还是每个子集合固定数量, 算法都不同。
wanghui0380 2014-07-17
  • 打赏
  • 举报
回复
var res = Enumerable.Range(1, 95).Select((p, index) => new { index = index / 10, p = p.ToString() }).GroupBy(c => c.index);
phommy 2014-07-17
  • 打赏
  • 举报
回复
var result = list.GroupBy(i => int.Parse(i) % 10).Select(g => g.ToList()).ToList(); 上边的误把你的类型给改了= = 用这个
smthgdin_020 2014-07-17
  • 打赏
  • 举报
回复
引用 1 楼 phommy 的回复:
var result = list.Select(int.Parse).GroupBy(i => i % 10).Select(g => g.ToList()).ToList();
+1
hckeep 2014-07-17
  • 打赏
  • 举报
回复
2楼 怎样写的?
exception92 2014-07-17
  • 打赏
  • 举报
回复
使用 linq 的 Skip和Take。
phommy 2014-07-17
  • 打赏
  • 举报
回复
var result = list.Select(int.Parse).GroupBy(i => i % 10).Select(g => g.ToList()).ToList();
於黾 2014-07-17
  • 打赏
  • 举报
回复
引用 8 楼 hckeep 的回复:
按照顺序平均拆,每个集合固定数量
一共94个,根本没法平均分10组
exception92 2014-07-17
  • 打赏
  • 举报
回复
引用 8 楼 hckeep 的回复:
按照顺序平均拆,每个集合固定数量
如果分成10组,最后一组的数量与前9个是不一样的。
exception92 2014-07-17
  • 打赏
  • 举报
回复
引用 3 楼 hckeep 的回复:
2楼 怎样写的?

 List<List<string>> listGroup = new List<List<string>>();
            int j = 10;
            for (int i = 0; i < list1.Count; i += 10)
            {
                List<string> cList = new List<string>();
                cList = list1.Take(j).Skip(i).ToList();
                j +=10;
                listGroup.Add(cList);
            }

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧