我有一个像arr[26,20]
这样的数组数组,每个数组的第一个位置都有字母。
如此布局以矩阵形式出现。
正斜杠代表空值。
我正在尝试在单个colomn中获取非null元素的数量。
所以我可以在普通数组上使用的代码是
int number = arr[0].Count(s => s != null);
但是,我如何为所描述的矩阵执行此操作?
答案 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
循环?