C#中的二维数组切片

时间:2009-09-10 15:45:24

标签: c# arrays

我正在寻找在C#中切割二维数组。

我有两倍[2,2]的价格,想要检索这个数组的第二行。我试过价格[1,],但我觉得它可能是别的。

提前致谢。

3 个答案:

答案 0 :(得分:15)

没有直接的“切片”操作,但您可以定义这样的扩展方法:

public static IEnumerable<T> SliceRow<T>(this T[,] array, int row)
{
    for (var i = 0; i < array.GetLength(0); i++)
    {
        yield return array[i, row];
    }
}

double[,] prices = ...;

double[] secondRow = prices.SliceRow(1).ToArray();

答案 1 :(得分:1)

问题是你是否有锯齿状或多维数组......这里是如何从以下两者中检索值:

 int[,] rectArray = new int[3,3]
  {
      {0,1,2}
      {3,4,5}
      {6,7,8}
  };

 int i = rectArray[2,2]; // i will be 8

 int[][] jaggedArray = new int[3][3]
  {
      {0,1,2}
      {3,4,5}
      {6,7,8}
  };

  int i = jaggedArray[2][2]; //i will be 8

编辑:添加以解决切片部分......

要从其中一个数组中获取一个int数组,您必须循环并检索您所追求的值。例如:

  public IEnumerable<int> GetIntsFromArray(int[][] theArray) {
  for(int i = 0; i<3; i++) {
     yield return theArray[2][i]; // would return 6, 7 ,8  
  }
  }

答案 2 :(得分:0)

Enumerable.Range(0, 2)
                .Select(x => prices[1,x])
                .ToArray();