C#数据表计数一个范围内的行数

本文关键字:范围内 一个 数据表 | 更新日期: 2023-09-27 18:28:37

我正在尝试计算和计数C#数据表中某个范围内的行数。

我想要Responses列中的值介于25和49之间的行数(计数)。但是,我不确定如何完成下面的代码行。

我收到错误"操作数&&无法应用于类型'string'和'string'。我已尝试将语句转换为Int32,但它仍然无法编译。"。如何正确键入此语句?

// Populate datatable from the database.    
answersDataTable = GetData.getIndividualQuestionResponsesOpenEndedAndRange(questionId);
Int32 range25To49 = Convert.ToInt32(answersDataTable.Compute("COUNT(Response)", "Response > '75'" && "Response < '50'"));

C#数据表计数一个范围内的行数

数据表筛选器语法中的逻辑&&只是"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"));
 Int32 range25To49 = Convert.ToInt32(answersDataTable.Compute("COUNT(Response)", "Response > 75 AND Response < 50"));