在Ruby中,Enumerable上有一个each_cons
。它像这样工作
(1..5).each_cons(3) {|n| p n}
我想在C#中做到这一点。 LINQ会很好。
以下代码执行类似的操作,但它会循环一对多,并且还进行了硬编码,仅返回两个元素
var ints = new int[] { 1, 2, 3, 4, 5, 6, 7 };
var cons = ints.Select((o, i) =>
new int[]{ ints[i], i == ints.Length - 1 ? 0 : ints[i + 1] });
如果可以在原始数组上将其创建为迭代器,而不必创建大量数组,那将是很好的选择。
最佳答案
尝试以下
var ints = Enumerable.Range(1, 3).Select(x => Enumerable.Range(x, 3));
这将返回具有指定值的
IEnumerable<IEnumerable<int>>
。您可以随时添加.ToArray
表达式以将其放入数组(如果这是意图)(无法确定那是[]
在ruby中的含义)关于c# - 迭代并返回连续n个元素的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4660446/