2012-03-21 2 views
2

특정 범위 사이에있는 C# DataTable 내의 행 수를 계산하고 계산하려고합니다.C# DataTable Count 범위 내의 행 수

응답 열의 값은 25과 49 사이 여기서 I는 행 수 (카운트) 싶다. 그러나 다음 코드 줄을 완료하는 방법을 잘 모르겠습니다.

내가 는 "피연산자 &가 &은 '문자열'과 '문자열을' 입력에 적용 할 수없는 오류가 발생하고있다. 나는 INT32에 문을 변환 시도했지만 여전히 컴파일되지 않습니다. 을 내가 올바르게를 입력 할 수있는 방법 ? 문

// Populate datatable from the database.  
answersDataTable = GetData.getIndividualQuestionResponsesOpenEndedAndRange(questionId); 

Int32 range25To49 = Convert.ToInt32(answersDataTable.Compute("COUNT(Response)", "Response > '75'" && "Response < '50'")); 

답변

3

DataTable에 필터 구문 논리적 &&은 단순히 "AND", 그래서으로 변경 :

Int32 range25To49 = 
Convert.ToInt32(answersDataTable.Compute("COUNT(Response)", 
             "Response > 75 AND Response < 50")); 

받은 오류는 자명 한 것입니다. 두 문자열 필터 (예 : "Response > '75'""Response < '50'") 사이에 논리식 &&을 적용하려고 시도했지만 물론 불가능합니다.

이전 코드 조각과 같이 조건을 모두 포함하는 필터를 만들어야합니다.

또한 숫자 주위의 작은 따옴표는 필요하지 않습니다 (잘 작동하는 것처럼 보이더라도).

편집 :

Response 컬럼의 유형이 숫자가 아니라 문자열, 당신은 예를 들어, Convert() 기능을 사용할 수있는 경우 :

Int32 range25To49 = 
Convert.ToInt32(
answersDataTable.Compute("COUNT(Response)", 
"Convert(Response,'System.Int32') > 75 AND Convert(Response,'System.Int32') < 50")); 
+0

코드는 컴파일하지만 모든 값을 계산되지 나타납니다. 3이 있어야합니다. 그러나 0을 반환합니다. SQL Server 데이터베이스의 열 데이터 형식은 NVarChar입니다. 이게 문제 야? – HGomez90

+0

@Rupert : 가능합니다. 예를 들어 변환 내부에 숫자를 래핑하십시오. 'Convert (Response, 'System.Int32')> 75' – digEmAll

0
Int32 range25To49 = Convert.ToInt32(answersDataTable.Compute("COUNT(Response)", "Response > 75 AND Response < 50"));