2012-03-21 12 views
2

C#DataTable内の特定の範囲内の行数を計算してカウントしようとしています。C#DataTable Count範囲内の行数

応答列の値が25と49間にある場合、私は、行の数(カウント)たいです。しかし、私はどのように次のコード行を完成するか分からない。私は「は、オペランド& & 『の文字列』と 『文字列』を入力するために適用することはできません。私はの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")); 

受け取ったエラーはわかりやすく2つの文字列フィルタ("Response > '75'""Response < '50'")の間に論理&&を適用しようとしていますが、もちろん不可能です。

前のコードスニペットに示すように、代わりに両方の条件を含むフィルタを作成する必要があります。

また、数字の前後にある一重引用符は必要ありません(それがうまくいくようでも)。

EDIT:

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"));