将空行添加到数据表的循环不起作用
For loop to add empty rows to datatable isn't working
我有一些代码可以比较两个数据表。如果一个 table 的行数比另一个多,我希望能够添加空白行,直到它们的行数相等。
我试过这个:
for (int i = 0; i < difference; i++)
{
table.Rows.Add();
}
以及
DataRow newRow = table.NewRow();
table.ImportRow(newRow);
和
DataRow newRow = table.NewRow();
table.Rows.Add(newRow);
None 这些似乎有效。
table.Rows.Add()(有和没有参数)似乎在一次迭代后让我脱离了循环
ImportRow 循环了适当的次数,但只添加了一个新行
我哪里错了?
通过此测试:
var table = new DataTable();
for (int i = 0; i < 5; i++)
{
var row = table.NewRow();
table.Rows.Add(row);
}
DataTable table 包含 5 行。
以下代码对我来说没问题:
DataTable dtable = new DataTable();
dtable.Columns.Add("Column1");
dtable.Columns.Add("Column2");
for (int i = 0; i < 10; i++)
{
DataRow newRow = dtable.NewRow();
dtable.Rows.Add(newRow);
}
正如预期的那样,它向我的 DataTable 添加了 10 个空行。如果这对您不起作用,则可能是您的 DataTable 具有主键或其他限制,阻止添加这些空行。在这种情况下向我们展示您的 DataTable 定义。
编辑
在这个例子中我在前面的基础上定义了一个主键,所以这段代码不起作用:
DataTable dtable = new DataTable();
dtable.Columns.Add("Key");
dtable.Columns.Add("Column2");
dtable.PrimaryKey = new DataColumn[]{dtable.Columns[0]};
for (int i = 0; i < 10; i++)
{
DataRow newRow = dtable.NewRow();
dtable.Rows.Add(newRow);
}
失败并显示 NoNullAllowedException
,即主键不能为空。
以下代码有效:
for (int i = 0; i < 10; i++)
{
DataRow newRow = dtable.NewRow();
newRow["Key"] = i;
dtable.Rows.Add(newRow);
}
因为我正在为主键设置一个值。在你的情况下,这取决于你的主键的数据类型,你还必须检查你的值 "inventing" 是否已经存在,否则它也会失败。
我希望你现在已经清楚了。
我有一些代码可以比较两个数据表。如果一个 table 的行数比另一个多,我希望能够添加空白行,直到它们的行数相等。
我试过这个:
for (int i = 0; i < difference; i++)
{
table.Rows.Add();
}
以及
DataRow newRow = table.NewRow();
table.ImportRow(newRow);
和
DataRow newRow = table.NewRow();
table.Rows.Add(newRow);
None 这些似乎有效。
table.Rows.Add()(有和没有参数)似乎在一次迭代后让我脱离了循环
ImportRow 循环了适当的次数,但只添加了一个新行
我哪里错了?
通过此测试:
var table = new DataTable();
for (int i = 0; i < 5; i++)
{
var row = table.NewRow();
table.Rows.Add(row);
}
DataTable table 包含 5 行。
以下代码对我来说没问题:
DataTable dtable = new DataTable();
dtable.Columns.Add("Column1");
dtable.Columns.Add("Column2");
for (int i = 0; i < 10; i++)
{
DataRow newRow = dtable.NewRow();
dtable.Rows.Add(newRow);
}
正如预期的那样,它向我的 DataTable 添加了 10 个空行。如果这对您不起作用,则可能是您的 DataTable 具有主键或其他限制,阻止添加这些空行。在这种情况下向我们展示您的 DataTable 定义。
编辑
在这个例子中我在前面的基础上定义了一个主键,所以这段代码不起作用:
DataTable dtable = new DataTable();
dtable.Columns.Add("Key");
dtable.Columns.Add("Column2");
dtable.PrimaryKey = new DataColumn[]{dtable.Columns[0]};
for (int i = 0; i < 10; i++)
{
DataRow newRow = dtable.NewRow();
dtable.Rows.Add(newRow);
}
失败并显示 NoNullAllowedException
,即主键不能为空。
以下代码有效:
for (int i = 0; i < 10; i++)
{
DataRow newRow = dtable.NewRow();
newRow["Key"] = i;
dtable.Rows.Add(newRow);
}
因为我正在为主键设置一个值。在你的情况下,这取决于你的主键的数据类型,你还必须检查你的值 "inventing" 是否已经存在,否则它也会失败。
我希望你现在已经清楚了。