Я знаю, что это очень старый вопрос, и у меня похожая ситуация несколько дней назад.
Проблема была в моей таблице ок.10000 строк, так что циклическая переборка DataTable
строк была очень медленной.
Наконец, я нашел гораздо более быстрое решение, где я делаю копию источника DataTable
с желаемыми результатами, чистый источник DataTable
и merge
результаты из временного DataTable
в исходный.
note : вместо этого ищите Joe
в DataRow
с именем name
Вы должны искать все записи, у которых нет имени Joe
(немного противоположный способ поиска)
Есть пример (vb.net
):
'Copy all rows into tmpTable whose not contain Joe in name DataRow
Dim tmpTable As DataTable = drPerson.Select("name<>'Joe'").CopyToTable
'Clear source DataTable, in Your case dtPerson
dtPerson.Clear()
'merge tmpTable into dtPerson (rows whose name not contain Joe)
dtPerson.Merge(tmpTable)
tmpTable = Nothing
Я надеюсь, что это более короткое решение поможет кому-то.
Тамэто c#
код (не уверен, что это правильно, потому что я использовал онлайн-конвертер :():
//Copy all rows into tmpTable whose not contain Joe in name DataRow
DataTable tmpTable = drPerson.Select("name<>'Joe'").CopyToTable;
//Clear source DataTable, in Your case dtPerson
dtPerson.Clear();
//merge tmpTable into dtPerson (rows whose name not contain Joe)
dtPerson.Merge(tmpTable);
tmpTable = null;
Конечно, я использовал Try/Catch
в случае, если нет результата (например, если ВашdtPerson
не содержит name
Joe
это вызовет исключение), поэтому Вы ничего не делаете со своим столом, он остается неизменным.