在 foreach 或 for 循环中声明 DataRow
Declaring DataRow within a foreach or for Loop
情况是这样的。我有一个 select 查询,它获取我想插入到新数据表中的数据行数组。
但是在尝试添加行时出现以下错误:
"Row already belongs to another Table".
所以我尝试在循环(for 和 foreach 循环)中创建并初始化一个新的 DataRow,然后在初始化 DataRow 时抛出错误:
"Inaccessible due to its protection level"
有什么想法吗?感觉好像错过了一些愚蠢的东西。
我的第一个错误代码:
var DRCurrentAuspragung = _DTAuspragung.Select(@"MerkmalID = "+Convert.ToString(MerkmalID));
_DTCurrentAuspragung = new DataTable();
for (int i = 0; i < DRCurrentAuspragung.Length;i++ )
{
DataRow RowAdd = DRCurrentAuspragung[i];
_DTCurrentAuspragung.Rows.Add(RowAdd);
}
对于第二个错误:
var DRCurrentAuspragung = _DTAuspragung.Select(@"MerkmalID = "+Convert.ToString(MerkmalID));
_DTCurrentAuspragung = new DataTable();
foreach (DataRow dr in DRCurrentAuspragung)
{
DataRow RowAdd = new DataRow();
RowAdd = dr;
_DTCurrentAuspragung.Rows.Add(RowAdd);
}
提前致谢。
此异常的原因是一个 DataRow
对象不能属于多个 table。一种解决方案是在 ImportRow
方法的帮助下创建此行的副本:
_DTCurrentAuspragung.ImportRow(RowAdd);
不要忘记在选择行后使用 Clone()
,因为这两个 table 必须具有相同的结构:
DataTable _DTCurrentAuspragung = _DTAuspragung.Clone();
所以,结果是:
var DRCurrentAuspragung = _DTAuspragung.Select(@"MerkmalID = " + Convert.ToString(MerkmalID));
_DTCurrentAuspragung = _DTAuspragung.Clone();
for (int i = 0; i < DRCurrentAuspragung.Length; i++ )
{
DataRow RowAdd = DRCurrentAuspragung[i];
_DTCurrentAuspragung.ImportRow(RowAdd);
}
您可能需要使用 ImportRow() 方法。请记住,要向其中导入行的 table 必须与要导入的行所属的 table 具有相同的结构(列名和类型)
情况是这样的。我有一个 select 查询,它获取我想插入到新数据表中的数据行数组。
但是在尝试添加行时出现以下错误:
"Row already belongs to another Table".
所以我尝试在循环(for 和 foreach 循环)中创建并初始化一个新的 DataRow,然后在初始化 DataRow 时抛出错误:
"Inaccessible due to its protection level"
有什么想法吗?感觉好像错过了一些愚蠢的东西。
我的第一个错误代码:
var DRCurrentAuspragung = _DTAuspragung.Select(@"MerkmalID = "+Convert.ToString(MerkmalID));
_DTCurrentAuspragung = new DataTable();
for (int i = 0; i < DRCurrentAuspragung.Length;i++ )
{
DataRow RowAdd = DRCurrentAuspragung[i];
_DTCurrentAuspragung.Rows.Add(RowAdd);
}
对于第二个错误:
var DRCurrentAuspragung = _DTAuspragung.Select(@"MerkmalID = "+Convert.ToString(MerkmalID));
_DTCurrentAuspragung = new DataTable();
foreach (DataRow dr in DRCurrentAuspragung)
{
DataRow RowAdd = new DataRow();
RowAdd = dr;
_DTCurrentAuspragung.Rows.Add(RowAdd);
}
提前致谢。
此异常的原因是一个 DataRow
对象不能属于多个 table。一种解决方案是在 ImportRow
方法的帮助下创建此行的副本:
_DTCurrentAuspragung.ImportRow(RowAdd);
不要忘记在选择行后使用 Clone()
,因为这两个 table 必须具有相同的结构:
DataTable _DTCurrentAuspragung = _DTAuspragung.Clone();
所以,结果是:
var DRCurrentAuspragung = _DTAuspragung.Select(@"MerkmalID = " + Convert.ToString(MerkmalID));
_DTCurrentAuspragung = _DTAuspragung.Clone();
for (int i = 0; i < DRCurrentAuspragung.Length; i++ )
{
DataRow RowAdd = DRCurrentAuspragung[i];
_DTCurrentAuspragung.ImportRow(RowAdd);
}
您可能需要使用 ImportRow() 方法。请记住,要向其中导入行的 table 必须与要导入的行所属的 table 具有相同的结构(列名和类型)