我需要从列具有特定值的DataTable dt中删除行 . 在删除它们之前,我将它们复制到另一个DataTable dt2nd .
看起来像这样
for (int i = dt.Rows.Count - 1; i >= 0; i--)
{
DataRow row = dt.Rows[i];
if (row["Column2"].ToString() == "This Value")
{
dt2nd.ImportRow(row); //Copy
dt.Rows.Remove(row); //Remove
}
if (row["Column2"].ToString() == "Other Value")
{
dt2nd.ImportRow(row); //Copy
dt.Rows.Remove(row); //Remove
}
//This continues with more if
}
但是我收到一条错误消息
“附加信息:此行已从表中删除,并且没有任何数据.BeginEdit()将允许在此行中创建新数据 . ”
很多行可以具有“此值”或“其他值” .
==“”值可以是很多不同的值,所以如果我这样做,那将是很多IF语句 .
有没有什么好方法可以用LINQ或其他方式做到这一点?
3 回答
你可以尝试这个......
此代码将起作用:
或者您可以使用switch语句而不是所有ifs或使用else if
要么
但是,您也可以在数据表上使用select,并输出需要移出的所有行 . 这样的事情:
它将返回满足条件的行 . 请参见此处的示例:http://www.dotnetperls.com/datatable-select
但是如果操作总是相同的话,代码可以缩短很多:
要么
然后,您可以将
z
复制到您想要的datatable
: