C# - 在VERTICAL集合中获取多维数组切片

时间:2016-05-25 18:24:52

标签: c# arrays multidimensional-array

我有一个使用多维数组数据结构的程序。数据被分配到多维数组中,一次一个数组(或行)(使用for循环)。

例如,假设该数组包含以下值:

double[][] values = new double[][]
{
    {0.0, 0.1, 0.2, 0.3}, //each row added as 1
    {1.0, 1.1, 1.2, 1.3},
    {2.0, 2.1, 2.2, 2.3},
    {3.0, 3.1, 3.2, 3.3}
};

在程序的某些点上,需要返回多维数组的子集,具体取决于某些变量中保存的值。但是,这需要将数组数据分组而不是行。

例如,像这样:

//two dimensional array function to return subset of 'values'
public double[][] getArrayData(int startIndex, int endIndex)
{
    //for sake of example, assume startIndex = 1, endIndex = 2
    //returned structure would need to have the following values...
    {0.1, 1.1, 2.1, 3.1}, //all values in 'row' with index 1
    {0.2, 1.2, 2.2, 3.2}  //all values in 'row' with index 2

    //returns this 2D array
}

这基本上做的是将行数据转换为列数据,我预期可以使用某种双for循环来完成。

有谁知道如何达到这个结果?

谢谢,

标记

2 个答案:

答案 0 :(得分:2)

您可以使用LINQ在没有循环的情况下执行此操作。 public static double [] [] getArrayData(double [] [] values,int startIndex,int endIndex) {     返回         Enumerable.Range(startIndex,endIndex)             。选择(i => values.Select(x => x [i])             .ToArray()         ).ToArray(); } 的jsfiddle

答案 1 :(得分:0)

检查这个fiddle,我做了两个函数,一个用于翻转数组,另一个用于获取指定的行。我不确定你特别想要什么,但两者的组合应该有效。