如何向数据表中添加数据

8

我希望在C#中的循环中添加数据到datatable,但我无法实现。 我使用了这段代码,但它只运行一次。 当i = 2时它不起作用。 请帮忙。

DataTable dt = new DataTable();
dt.Columns.Add("ProductId");
dt.Columns.Add("ProductTotalPrice");
DataRow dr = dt.NewRow();

for (int i = 0; i < 10; i++)
{
    dr["ProductId"] = i.ToString();
    dr["ProductTotalPrice"] = (i*1000).ToString();
    dt.Rows.Add(dr);
}
3个回答

15

这是因为你在循环外只创建了一个 DataRow,所以你实际上是在用新值覆盖旧值。你应该在循环内部创建行,这样每次迭代就会有一个新行,就像这样:

DataTable dt = new DataTable();
dt.Columns.Add("ProductId");
dt.Columns.Add("ProductTotalPrice");
DataRow dr = null;

for (int i = 0; i < 10; i++)
{
    dr = dt.NewRow(); // have new row on each iteration
    dr["ProductId"] = i.ToString();
    dr["ProductTotalPrice"] = (i*1000).ToString();
    dt.Rows.Add(dr);
}

4
for (int i = 0; i < 10; i++)
{
    dr = dt.NewRow();
    dr["ProductId"] = i.ToString();
    dr["ProductTotalPrice"] = (i*1000).ToString();
    dt.Rows.Add(dr);
}

应该可以运行。

每次需要添加不同的数据行。你正在尝试添加相同的数据行。


为什么它应该工作?你可能还想在你的回答中包含那个解释。 - Rahul

1
另一种简单的方法:

for (int i = 0; i < 10; i++)
{
    dt.Rows.Add(i, i * 1000);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接