C# 无法基于另一个DataTable从DataTable中删除行
我有两个数据表 独特的: t: 我想删除t中包含computername的所有行,该行在distinct表的count列中少于3行。守则:C# 无法基于另一个DataTable从DataTable中删除行,c#,datatable,row,C#,Datatable,Row,我有两个数据表 独特的: t: 我想删除t中包含computername的所有行,该行在distinct表的count列中少于3行。守则: for (int i = 0; i < distinct.Rows.Count; i++) { if (Convert.ToInt32(distinct.Rows[i][1]) < 3) { foreach (DataRow row in t.Select()) { if (
for (int i = 0; i < distinct.Rows.Count; i++)
{
if (Convert.ToInt32(distinct.Rows[i][1]) < 3)
{
foreach (DataRow row in t.Select())
{
if (row[1].ToString() == distinct.Rows[i][0].ToString())
{
row.Delete();
}
}
}
}
但它什么也没做。如果我比较上面代码前后t的内容,结果是一样的。我在这里遗漏了什么?请参考以下链接
不能这样删除行。在您的案例中,需要执行DataTable.Rows.RemoveAtIndex或DataTable.Rows.RemoveDatarow替换row.Delete;与t.Rows.Row;是的,你说得对。它是这样工作的。
+----+-------+
| id | host |
+----+-------+
| 1 | comp1 |
+----+-------+
| 2 | comp2 |
+----+-------+
| 3 | comp1 |
+----+-------+
| 4 | comp3 |
+----+-------+
| 5 | comp1 |
+----+-------+
| 6 | comp3 |
+----+-------+
for (int i = 0; i < distinct.Rows.Count; i++)
{
if (Convert.ToInt32(distinct.Rows[i][1]) < 3)
{
foreach (DataRow row in t.Select())
{
if (row[1].ToString() == distinct.Rows[i][0].ToString())
{
row.Delete();
}
}
}
}