日期:2014-05-18  浏览次数:20987 次

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

------解决方案--------------------
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来存储

------解决方案--------------------
定义一个类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 就是你要的数组