请问在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 就是你要的数组