有一个datatable对象,我如何统计这个对象中符合某个条件的rows的个数?
不是从数据库中查询哦。

解决方案 »

  1.   

    方法一:
    DataTable dt;
     datatable dt2;
     .....dataview dv = new dataview(dt.defaultview);
     dv.rowfilter = "你的条件";
     dt2 = dv.table;
     return dt2;
    方法二、datable转LIST 再Linq过滤
    public static List<T> ConvertToList(DataTable dt)  
          {  
           // 定义集合   
             List<T> ts = new List<T>();  
             // 获得此模型的类型   
              Type type = typeof(T);  
              //定义一个临时变量   
              string tempName = string.Empty;  
              //遍历DataTable中所有的数据行   
              foreach (DataRow dr in dt.Rows)  
              {  
                  T t = new T();  
                  // 获得此模型的公共属性   
                  PropertyInfo[] propertys = t.GetType().GetProperties();  
                  //遍历该对象的所有属性   
                  foreach (PropertyInfo pi in propertys)  
                  {  
                     tempName = pi.Name;//将属性名称赋值给临时变量   
                     //检查DataTable是否包含此列(列名==对象的属性名)     
                     if (dt.Columns.Contains(tempName))  
                     {  
                         // 判断此属性是否有Setter   
                         if (!pi.CanWrite) continue;//该属性不可写,直接跳出   
                         //取值   
                         object value = dr[tempName];  
                         //如果非空,则赋给对象的属性   
                         if (value != DBNull.Value)  
                         pi.SetValue(t, value, null);  
                     }  
                 }  
                 //对象添加到泛型集合中   
                 ts.Add(t);  
         }         
      return ts;    
     } 
    list.where(s=>s.id>0).tolist<model>()
      

  2.   

     DataTable datatable = new DataTable();
                DataRow[] datarow = datatable.Select("xxx=xxx");//xxx为条件,然后遍历即可。
      

  3.   


    @ruhong
    符合条件的个数 = datarow.Count();
      

  4.   

    对了,再问一个问题,DataView只是过滤显示吧,他本身的rows个数好象并没有减少对不?
      

  5.   

    只是View,不会操作DataTable的数据。
      

  6.   

    DataRow[] ret=dt.Rows.Cast<DataRow>().Where(p => p["name"] == "明白了没?").ToArray();