amit
amit

Reputation: 23

Count number of rows in DataTable that meet some criteria

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;

I want to count the number of rows in a DataTable that have a TaskId == value.

This code is throwing an error saying no column found TaskId[value].

Upvotes: 2

Views: 6363

Answers (2)

Amit Mishra
Amit Mishra

Reputation: 285

Replace this line

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

WITH

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

you passed VALUE within ("")

Upvotes: 2

j.f.
j.f.

Reputation: 3949

You could use a simple for loop to iterate each row, looking at the TaskId field of each row. If it matches the criteria, increase a counter.

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++;
    }
}

Either that or you could use LINQ as well. The rows variable will hold a collection of DataRows that meet your criteria.

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

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

Upvotes: 1

Related Questions