0
A
回答
2
var list = new List<string>() { "A", "B", "C", "D", "E", "F", "G" };
int groupCount = 3;
var subLists = list.Select((s, i) => new {Str = s, Index = i}).
GroupBy(o => o.Index % groupCount, o => o.Str).
Select(coll => coll.ToList()).
ToList();
该代码将导致subLists
含有三个List<string>
的列表收藏品:{"A", "D", "G"}
,{"B", "E"}
和{"C", "F"}
。为了达到这个目的,我根据原始列表中的元素索引进行了分组(可以使用Select
方法重载,请参阅上面的链接)。您可以使用其他逻辑来选择密钥。
在我的例子中subLists
是List<List<string>>
。如果您需要阵列,请在适当的地方使用ToArray
。
编辑:如果您关心列表之间分配值的方式,使用模块操作进行分组可能不是一个好主意。也许是更好的选择是这样来做:
var list = new List<string>() { "A", "B", "C", "D", "E", "F", "G" };
int groupCount = 3;
int maxPerGroup = (int)Math.Ceiling((double)list.Count/groupCount);
var subLists = list.Select((s, i) => new {Str = s, Index = i}).
GroupBy(o => o.Index/maxPerGroup, o => o.Str).
Select(coll => coll.ToList()).
ToList();
这将产生以下结果:{"A", "B", "C"}
,{"D", "E", "F"}
,{"G"}
这可能是分配的值更理智的方式。底线是,您可以通过使用GroupBy
和Select
方法来实现您所需要的,只需提供适合您的域的正确分组逻辑即可。
0
交替,你可以做到这一点在LINQ像
var n = 4;
var i = 0;
var list = new List<string> { "a", "b", "c", "d", "e", "f", "g" };
var res = list.GroupBy(x => Math.Ceiling((double)++i/n)).Select(x=>x.Select(y=>y).ToList()).ToList();
Console.Write(res);
写这在控制台程序或N的Linqpad和变化值来看看效果
相关问题
- 1. LISP - 用列表中的第一个元素划分列表
- 2. $ _POST元素数量未知
- 3. 使用Python中以前未知数量的元素填充一个空列表
- 4. 列表划分元素力量2,保持列表
- 5. 将元素划分为一个数组中的元素?
- 6. 如何按最后一个元素haskell划分2d列表?
- 7. RecyclerView - 元素数量未知的listitem
- 8. 拆分列表到列表的列表,一个元素分裂
- 9. 多个表格按列总和划分表格元素
- 10. 分配变量到列表元素,不知道它的长度
- 11. 的Python:找到一个列表元素的数量在另一个列表
- 12. 返回未知长度的矢量的最后一个元素
- 13. 如何划分一个单元格数组元素
- 14. 划分列表并按Prolog的深度增加列表的每个元素
- 15. 划分一个图像划分成相等的像素数据
- 16. 计划语言向每个列表元素添加一个
- 17. 移动第一个元素移到列表的末尾 - 计划
- 18. 计划获得列表中的最后一个元素
- 19. 未设置元素阵列键未知
- 20. 将列表元素分配给变量而不知道列表的大小?
- 21. 未知数量值的下拉列表
- 22. 表中列的空格数量未知
- 23. Python:从元组列表中获取元素,n一次列表中未知长度的元素
- 24. Python列表中删除另一个列表与未知变量
- 25. 如何的每一个元素与另一个列表中的每个元素在Haskell划分在一个列表
- 26. Python:我如何迭代每个子列表的第一个元素而不知道子列表的数量?
- 27. 列表元素之间的短划痕
- 28. 分配一个巨大的元素列表到dict列表
- 29. 计数列表中的元素数量
- 30. 如何获取数组中元素的数量,当元素是未知的
是什么=>这里的意思?我们在这种情况下访问每个子列表的人是谁? – ikel 2012-01-11 04:39:14
@ikel:'=>'是Lambda表达式的语法(http://msdn.microsoft.com/en-us/library/bb397687.aspx),它们是面包和LINQ代码的黄油。我假设你还没有进入LINQ。也许是时候尝试了? 101 LINQ示例(http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b)是一个很好的开始。 – Dyppl 2012-01-11 04:45:05
谢谢,我将不得不尝试它,然后回到这里 – ikel 2012-01-11 04:46:52