计数非空矩阵元素的数量

时间:2012-12-12 08:31:18

标签: c# arrays multidimensional-array

我有一个像arr[26,20]这样的数组数组,每个数组的第一个位置都有字母。

如此布局以矩阵形式出现。

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

正斜杠代表空值。

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

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

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

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

3 个答案:

答案 0 :(得分: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秒维度等)。

答案 1 :(得分:1)

你可以简单地使用:

int columnIndex = 1;// column index to check
arr.Count(s => s[columnIndex] != null);

答案 2 :(得分:0)

您可以使用

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

原因是多维数组是非通用IEnumerable,但遗憾的是不是IEnumerable<YourArrayElementType>

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