2012-12-12 5 views
2

각 배열의 첫 번째 위치에 알파벳이있는 arr[26,20]과 같은 배열이 있습니다.숫자가 아닌 행렬 요소의 개수입니다.

그래서 매트릭스 형태로 깔끔하게되어 있습니다.

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

null 값을 나타내는 슬래시.

단일 colomn에 null이 아닌 요소의 수를 얻으려고합니다.

그래서 정상적인 배열에 사용할 수있는 코드는

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

, 나는 행렬이 작업을 수행 할 방법을 설명 같은 것?

답변

6

당신은 행 인덱스를 생성하는 Enumerable.Range()을 사용할 수

GetLength(dim) 치수 dim (0 - 제 사이즈 1 - 제 치수 등)을 따라 소자의 수를 제공
int colIdx = 0; // column index to check 
int num = Enumerable.Range(0,arr.GetLength(0)).Count(i => arr[i,colIdx] != null); 

.

+0

Enumerable을 사용하려하지만 아마도 내가 잘못하고있는 것을 보지 못했을 것입니다. 여기 정확한 코드가 있습니다. 'NumOfElem = Enumerable (0, MArray.GetLength (0)). (x => MArray [x, count]! = null) ' 오류가 발생했습니다. Enumerable은 변수처럼 사용되는 유형입니다. . – shadowjfaith

+0

'Enumerable.Range (...'단지 Enumerable (...';-)이 아닌 Enumerable.Range를 사용하십시오. – digEmAll

+0

아, 저기요, 고맙습니다 늦은 밤이었습니다 – shadowjfaith

1

당신은 간단하게 사용할 수 있습니다 : 당신은 불행하게도

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

이유 다차원 배열이 아닌 일반적인 IEnumerable 점이다,하지만 IEnumerable<YourArrayElementType>을 사용할 수 있습니다

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

.

죄송합니다. 이것은 행/열 하나가 아닌 전체 행렬에서 null이 아닌 요소를 계산합니다. 대신 digEmAll의 대답을 사용하십시오. 아니면 좋은 오래된 for 루프를 사용하지 않을까요?

관련 문제