C#DataTable计算范围内的行数

时间:2012-03-21 16:04:49

标签: c# datatable count range

我正在尝试计算和计算C#DataTable中一定范围之间的行数。

我想要响应列中的值介于 25和49 之间的行数(计数)。但是我不知道如何完成以下代码行。

我收到错误"操作数&&不能应用于键入' string'和'字符串' 。我已经尝试将语句转换为Int32但它仍然无法编译。 我怎样才能正确输入这个陈述?

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

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

2 个答案:

答案 0 :(得分:3)

数据表过滤器语法中的逻辑&&只是"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"));

答案 1 :(得分:0)

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