2014-10-31 2 views
0

У меня есть два 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, который содержит имя компьютера, имеющего меньше, чем в 3count колонку в distinct таблице. Код:

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)' в вашем случае заменить 'row.Delete();' с 't.Rows.Remove (row);' – Franck

+0

Да, ты ровный. Он работает именно так. – fishmong3r

ответ

Смежные вопросы