无法从DataTable中删除基于另一个DataTable的行

问题描述:

我有两个DataTable s。无法从DataTable中删除基于另一个DataTable的行

distinct

+-------+-------+ 
| host | count | 
+-------+-------+ 
| comp1 |  2 | 
+-------+-------+ 
| comp2 |  3 | 
+-------+-------+ 
| comp3 |  2 | 
+-------+-------+ 

t

+----+-------+ 
| id | host | 
+----+-------+ 
| 1 | comp1 | 
+----+-------+ 
| 2 | comp2 | 
+----+-------+ 
| 3 | comp1 | 
+----+-------+ 
| 4 | comp3 | 
+----+-------+ 
| 5 | comp1 | 
+----+-------+ 
| 6 | comp3 | 
+----+-------+ 

我想从t其中包含distinct表小于3count列中的计算机名称中删除所有行。代码:

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的内容,它就是一样的。我在这里错过了什么?

+1

不能删除行这样的。你需要'DataTable.Rows.RemoveAt(Index)'或'DataTable.Rows.Remove(Datarow)'在你的情况下用't.Rows.Remove(row);'替换'row.Delete();'' – Franck 2014-10-31 12:08:45

+0

是的,你很棒。它正在这样工作。 – fishmong3r 2014-10-31 12:34:14