C#中的二维数组切片

oma*_*ish 15 c# arrays

我想在C#中切片二维数组.

我有两倍[2,2]的价格,并希望检索此数组的第二行.我试过价格[1,],但我觉得它可能是别的东西.

提前致谢.

dtb*_*dtb 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();
Run Code Online (Sandbox Code Playgroud)

  • @Hamish Grubijan:它将静态方法转换为[扩展方法](http://msdn.microsoft.com/en-us/library/bb383977.aspx). (3认同)
  • 难道你不把 `row` 索引放错了,因为我认为它应该是 `array[row,column]` 吗? (2认同)

小智 6

Enumerable.Range(0, 2)
                .Select(x => prices[1,x])
                .ToArray();
Run Code Online (Sandbox Code Playgroud)