Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ将阵列高效转换为二维阵列_C#_Linq_Multidimensional Array - Fatal编程技术网

C# 使用LINQ将阵列高效转换为二维阵列

C# 使用LINQ将阵列高效转换为二维阵列,c#,linq,multidimensional-array,C#,Linq,Multidimensional Array,我想在C中以一种性能良好的方式完成下面的工作,最好使用LINQ 数组[Length]到数组[Length/Row][Row],其中Row和Length是变量。您可以使用在以下的n维数组之间高效转换: 这充分利用了多维不参差不齐的事实!阵列由CLR在内存中连续排列 对于不可blittable类型,只需使用一些好的ol'For循环。您可以使用它在n维数组之间高效地转换: 这充分利用了多维不参差不齐的事实!阵列由CLR在内存中连续排列 对于非blittable类型,只需使用一些好的ol'For循环。这

我想在C中以一种性能良好的方式完成下面的工作,最好使用LINQ

数组[Length]到数组[Length/Row][Row],其中Row和Length是变量。

您可以使用在以下的n维数组之间高效转换:

这充分利用了多维不参差不齐的事实!阵列由CLR在内存中连续排列

对于不可blittable类型,只需使用一些好的ol'For循环。

您可以使用它在n维数组之间高效地转换:

这充分利用了多维不参差不齐的事实!阵列由CLR在内存中连续排列


对于非blittable类型,只需使用一些好的ol'For循环。

这不是二维数组,而是锯齿状数组。我假设您指的是数组[长度/行,行]

LINQ中没有任何东西可以做到这一点,因此如果您想使用它,您将有一点开销。最有效的方法是直接编码:

public T[,] MakeRows<T>(T[] values, int rowSize) {
  T[,] result = new T[values.Length / rowSize, rowSize];
  int row = 0, col = 0;
  foreach (T value in values) {
    resul[row, col] = value;
    if (++col == rowsize) {
      col = 0;
      row++;
    }
  }
  return result;
}

注意:该方法假定项目可以均匀地划分为行。

这不是二维数组,而是锯齿状数组。我假设您指的是数组[长度/行,行]

LINQ中没有任何东西可以做到这一点,因此如果您想使用它,您将有一点开销。最有效的方法是直接编码:

public T[,] MakeRows<T>(T[] values, int rowSize) {
  T[,] result = new T[values.Length / rowSize, rowSize];
  int row = 0, col = 0;
  foreach (T value in values) {
    resul[row, col] = value;
    if (++col == rowsize) {
      col = 0;
      row++;
    }
  }
  return result;
}

注意:该方法假设项可以均匀地划分为行。

您能举一个例子说明您试图转换的数据的外观吗?LINQ to Objects处理IEnumerable,而不是直接处理数组。二维数组根本不受支持。您能举一个例子说明您试图转换的数据的外观吗?LINQ to Objects处理IEnumerable,而不是直接处理数组。实际上根本不支持二维数组。