C # чувствителен к регистру, поэтому, скорее всего, фактическое значение не пишется с заглавной буквы «IP», или, возможно, содержит пробел и т. Д. Попробуйте сравнить со строкой. Сравните, используя перегруженную версию, где вы можете использовать ложь для case чувствительность.
Кстати - есть несколько способов проверить значение, которое может быть немного чище.
Во-первых, вы можете использовать метод Select, предоставляемый объектом DataTable, чтобы отфильтровать строки только со столбцами со значением «IP» в столбце с индексом 1. Вам нужно будет использовать имя столбца, поэтому я предполагаю, что он называется "Столбец1" для этого примера:
foreach ( DataRow myRow in dt.Rows.Select("Column1 = 'IP'") )
{
myRow.BeginEdit();
myRow["grd"] = " ";
myRow.EndEdit();
}
В качестве альтернативы вы можете использовать оператор LINQ следующим образом:
foreach (DataRow myRow in dt.Rows.Cast<System.Data.DataRow>().Where(r => string.Compare(r[1].ToString(), "IP", true) == 0)
{
myRow.BeginEdit();
myRow["grd"] = " ";
myRow.EndEdit();
}
Как отмечает Hand-E-Food, переменная "x" в вашем примере не работает.