DataTable通过foreach语句编辑每行

时间:2012-08-28 10:23:23

标签: c# foreach datatable datarow

我的问题是我无法使用另一个Datatable的值填充DataTable。 代码如下:


        foreach (DataRow row1 in ds.Tables["tests"].Rows)
        {
            //Use value stored in DataTable "tests" to generate
            //new DataTable called "temp" and fill it with values

            foreach (DataRow row2 in ds.Tables["temp"].Rows)
            {
                //use values in "temp"-table to fill fields in "tests"-table
       ->       if (specific condition in Datatable "tests" is met)
                {
                    example1: row1.ItemArray[10] = Convert.ToInt64(row2.ItemArray[0]);
                    example2: ds.Tables["tests"].Rows[row1.Table.Rows.IndexOf(row1)].ItemArray[10] = Convert.ToInt64(row2.ItemArray[0]);
                }
                else if (another specific condition in Datatable "tests" is met)
                {
                    //Different fields will be filled
                }
            }
        }

尝试调试程序时,在if语句的开头使用停止点,一切都会解析,直到程序跳转到if语句的执行块。

跳过执行块中的每一行 这是我得到的读出消息(松散翻译):
NonUserCode "System.Data.DataSet.Tables.get" is being skipped.
NonUserCode "System.Data.DataRow.ItemArray.get" is being skipped.

任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:3)

无需使用ItemArray。

if (specific condition in Datatable "tests" is met)
{
      row1[10] = Convert.ToInt64(row2[0]); //try this only.
}
else if (another specific condition in Datatable "tests" is met)
{
     //Different fields will be filled
}

当您访问ItemArray时,它返回一个本地数组。并通过为此本地数组赋值,而不对数据表进行任何更改。

答案 1 :(得分:-1)

尝试审核主题:DataRow Copy