如何在C#中将DataTable单元格值转换为对象数组

时间:2014-04-04 07:14:11

标签: c# asp.net object datatable

这是我的代码,

object[] objrow = new object[]{"Test","test1","test2","test3","test4"};

object[] objrow1 = new object[]{"Test","test1","test2","test3","test4"};

 DataTable dtentercodemfm = new DataTable();
 dtentercodemfm.Columns.Add("objrow");
 dtentercodemfm.Columns.Add("objrow1");
 dtentercodemfm.Rows.Add(objrow, objrow1);

获取此数据时

object[] objrow = (object[])dtentercodemfm.Rows[0][0];
object[] objrow1 = (object[])dtentercodemfm.Rows[0][1];

给我错误

Unable to cast object of type 'System.String' to type 'System.Object[]'.

如何解决。

3 个答案:

答案 0 :(得分:0)

你可以尝试

object[] objrow = (object[]) Convert.ToString(dtentercodemfm.Rows[0][0]).Split(',') ;

答案 1 :(得分:0)

这可行(尝试和测试)。

创建列时执行此操作

dtentercodemfm.Columns.Add("objrow", typeof (object[]));
dtentercodemfm.Columns.Add("objrow1", typeof (object[]));

enter image description here

为什么会这样?

因为在创建列时不提供类型,所以采用默认类型String。因此,数据以字符串形式存储在DB中,即“System.Object”。

答案 2 :(得分:0)

你不应该像这样写下你的问题吗

    dtentercodemfm.Columns.Add("objrow");

    dtentercodemfm.Rows.Add(objrow);
    dtentercodemfm.Rows.Add(objrow1);

    dtentercodemfm.AcceptChanges();

添加2行1列 你正在做反向,添加1列,并添加2行