计算DataTable中符合某些条件的行数

时间:2015-09-04 12:42:52

标签: asp.net

DataTable dt = GetDataTable();

if(field=="TaskId")
{
    string value = ((e.Item as GridFilteringItem)[field] as GridTableCell).Column.CurrentFilterValue
    int VALUE = Int32.Parse(value);           
    int numberOfRecords = dt.Select("TaskId = VALUE").Length;

我想计算DataTableTaskId == value的行数。

此代码抛出错误,表示找不到任何列TaskId [value]。

2 个答案:

答案 0 :(得分:2)

替换此行

int numberOfRecords = dt.Select("TaskId = VALUE").Length;

使用

int numberOfRecords = dt.Select("TaskId = " + VALUE).Length;

你在(“”)

中传递了VALUE

答案 1 :(得分:1)

您可以使用简单的for循环来迭代每一行,查看每行的TaskId字段。如果符合条件,请增加计数器。

string value = ((e.Item as GridFilteringItem)[field] as GridTableCell).Column.CurrentFilterValue

int count = 0;
for(int i = 0; i < dt.Rows.Count; i++)
{
    if(dt.Rows[i]["TaskId"].ToString() == value)
    {
        count++;
    }
}

要么你也可以使用LINQ。 rows变量将包含符合条件的DataRows集合。

var rows = from row in dt.AsEnumerable()
           where row.Field<string>("TaskId") == value
           select row;

int count = rows.Count<DataRow>();