2

我有一个数组数组,类似于arr[26,20]每个数组的第一个位置的字母表。

所以以矩阵形式排列它会像这样。

  • ABCDEFGHIJKLMNOPQRSTUVWXYZ
  • ///////////////////////
  • ///////////////////////
  • ///////////////////////
  • ///////////////////////

表示空值的正斜杠。

我正在尝试在单个列中获取非空元素的数量。

所以我可以在普通数组上使用的代码是

int number = arr[0].Count(s => s != null);

但是,我将如何为描述的矩阵执行此操作?

4

3 回答 3

6

您可以使用Enumerable.Range()生成行索引:

int colIdx = 0; // column index to check
int num = Enumerable.Range(0,arr.GetLength(0)).Count(i => arr[i,colIdx] != null);

其中GetLength(dim)给出沿维度的元素数量dim(0 - 第一维度,1 - 第二维度等)。

于 2012-12-12T08:37:27.850 回答
1

您可以简单地使用:

int columnIndex = 1;// column index to check
arr.Count(s => s[columnIndex] != null);
于 2012-12-12T08:37:41.173 回答
0

您可以使用

arr.Cast<YourArrayElementType>().Count(s => s != null);

原因是多维数组是非泛型的IEnumerable,但不幸的是不是IEnumerable<YourArrayElementType>

糟糕,这会计算整个矩阵中的非空元素,而不仅仅是一列/行。因此,请改用 digEmAll 的答案。或者为什么不使用一个好的旧for循环?

于 2012-12-12T09:05:47.403 回答