2015-09-04 66 views
2
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; 

我想要計算DataTable中具有TaskId == value的行數。DataTable中的行數滿足一些條件

此代碼拋出錯誤,表示沒有找到TaskId [value]列。

+0

也許有一個RowFilter HTTP一個DataView://計算器。 com/a/3060221/695 – Saltire

+0

行過濾器也嘗試過,但是什麼當我提到直接的列值爲2或3時,在這裏發生的事情不是VALUE,而是它正在工作..但是動態地,我希望它基於在Radgrid中輸入的值。 – amit

回答

2

替換該行

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

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

您在傳遞的值( 「」)

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。行變量將保存符合您的條件的DataRows集合。

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

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