请问在C#中,用foreach如何将datatable 
中的数据遍历,并存入一个数组中?

解决方案 »

  1.   


    ArrayList arr = new ArrayList();
    >
    foreach (DataRow dr in tables.Rows)
    {
    arr.Add(dr);
    }
      

  2.   


    foreach (DataRow row in tables.Rows) 

       foreach(DataColumn col in tables.Columns)
       {
          //把row[col]放入你的数组
       } 
      

  3.   

    ArrayList arr = new ArrayList(); 
    foreach (DataRow row in tables.Rows) 
    {
        arr.add(row[index]);
    }
      

  4.   

    DataTable中存储的类型是相同
    以Int32类型为例
    public Int32[][] DataTableToArray(DataTable dtTable)
    {
      if(null == dtTable)
      {
        return new Int32[0][0];
      }
      Int32 arr = new Int32 [dtTable.Rows.Count][dtTable.Columns.Count];
      int i=0;
      int j=0;
      foreach (DataRow drTemp in dt.Rows) 
      { 
        i++;
        j = 0;
        foreach(DataColumn dcTemp in tables.Columns) 
        { 
          arr[i][j] = Convert.ToInt32(drTemp[dcTemp]);
          j++
        } 
      } 
      return arr;
    }
    如果类型不同的话,上述方法可以将Int32类型转化为Object类型处理
    或整体修改为用ArrayList来存储
      

  5.   

    ArrayList存储的是object型的,在用ArrayList中的数据时楼主还要对ArrayList中的对象进行类型转换,这样效率不是很高;
    而且还要判断要转换为何种类型,我支持5楼的兄弟.
    小弟才疏学浅,如有错误请大家指教
      

  6.   

    定义一个类A,A的成员对应datable的列
    按下面的代码:
    list<A> arrlist= new list<A>();
    foreach(DataRow row in tables.Rows) 

        A item = new A();
        if (!Convert.IsDBNull(dr["表列名1"]))
        {
             item.与表列名对应的类成员1= Convert.ToInt32(dr["表列名1"]);
        }
        if (!Convert.IsDBNull(dr["表列名2"]))
        {
             item.与表列名对应的类成员2= Convert.ToInt32(dr["表列名2"]);
        }
        ......
        arrlist.Add(item);

    arrlist 就是你要的数组                               
      

  7.   

    item.与表列名对应的类成员2= Convert.ToInt32(dr["表列名2"]); Convert的类型就看你的类成员定义的是什么类型了
      

  8.   

     DataSet ds =db.ReadObject(strSql);
            foreach (DataRow dr in ds.Tables[0].Rows)