在foreach c#中将行追加到数据表中

时间:2016-11-14 14:54:39

标签: c# asp.net .net datarow

我需要逐个添加行。以下代码仅添加当前行,如何在现有行之上添加行?

DataTable dt = new .DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Property", typeof(string));
DataRow row = dt.NewRow();

foreach (Object form in Obj)
{
    string str1 = "hi";
    string str2 = "hey";
    row["Name"] = str1;
    row["Property"] = str2;
    dt.Rows.Add(row);
}

真的很感激任何建议吗?

更新1:

我的实际代码

 System.Data.DataTable dt = new System.Data.DataTable();
 dt.Columns.Add("Name", typeof(string));
 dt.Columns.Add("Property", typeof(string));

 if (crobj.SourceName.StartsWith("{@"))
   {
     foreach (CRObject crform in lstObj)
       {
         if (crform.FormulaForm == crobj.SourceName)
           {                                                            
             System.Data.DataRow newRow = dt.NewRow();
             newRow["Name"] = "hi";
             newRow["Property"] = "hey";                                                            
             dt.Rows.Add(newRow);
           }                                                        
       }
   }

2 个答案:

答案 0 :(得分:0)

小变化:

DataTable dt = new .DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Property", typeof(string));

foreach (Object form in Obj)
{
    DataRow row = dt.NewRow();   <<<------------
    string str1 = "hi";
    string str2 = "hey";
    row["Name"] = str1;
    row["Property"] = str2;
    dt.Rows.Add(row);
}

通过在循环内生成一个新行,它被视为一个新行而不是同一个行。

编辑:如果这不起作用,那么Obj集合可能不包含值。试试这个来测试:

DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Property", typeof(string));

for (int i=0; i<5; i++)
{
    DataRow row = dt.NewRow();   
    string str1 = "hi";
    string str2 = "hey";
    row["Name"] = str1;
    row["Property"] = str2;
    dt.Rows.Add(row);
}

有了这个,结果数据表包含5行。

答案 1 :(得分:0)

您只有一个rowDataRow)对象可供您重新编辑。在循环范围内声明一个新的:

foreach (Object form in Obj)
{
    DataRow row = dt.NewRow();
    //...
    dt.Rows.Add(row);
}