在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/

10-10 21:31