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

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 (

我有两个数据表

独特的:

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 (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();
            }
         }
     }
 }