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
, который содержит имя компьютера, имеющего меньше, чем в 3
count
колонку в 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
перед приведенным выше кодом и после этого, это будет точно так же. что мне здесь не хватает?
вы не можете удалить строку, как это. вам нужно сделать 'DataTable.Rows.RemoveAt (Index)' или 'DataTable.Rows.Remove (Datarow)' в вашем случае заменить 'row.Delete();' с 't.Rows.Remove (row);' – Franck
Да, ты ровный. Он работает именно так. – fishmong3r