Вы получаете эту ошибку, когда Вы вызываете функцию, которая была создана в окне, или структурируйте, это больше не существует.
, Если Вы не знаете заранее, существует ли окно все еще, можно сделать попытку/выгоду обнаружить его:
try
{
f();
}
catch(e)
{
if (e.number == -2146823277)
// f is no longer available
...
}
Вы можете использовать метод Compute
, например:
if (table.Compute("COUNT(ColumnName)", "ColumnName <> NULL") == 0)
table.Columns.Remove("ColumnName");
В качестве альтернативы вы можете использовать LINQ:
if (table.AsEnumerable().All(dr => dr.IsNull("ColumnName")))
table.Columns.Remove("ColumnName");
EDIT : Чтобы полностью ответить на вопрос:
foreach(var column in table.Columns.Cast<DataColumn>().ToArray()) {
if (table.AsEnumerable().All(dr => dr.IsNull(column)))
table.Columns.Remove(column);
}
Вам нужно вызвать ToArray
, потому что цикл изменит коллекцию.