Это может быть какой-то тривиальный вопрос, но до сих пор я не мог его получить (поскольку я сказал, что уверен, что это довольно просто, но я не вижу его).ADO.NET проверяет, если имя столбца в выбранных столбцах
Я делаю отборное с ADO.NET, что-то вроде этого
SELECT col1,col2 from table1
У меня есть несколько выбирает, где данные я выбрать несколько отличается. Нет. Я создал функцию, в которой я извлекаю выбранные данные (есть все столбцы, которые встречаются хотя бы в одном из них), и есть проблема. Поскольку данные, которые я выбираю, не всегда одинаковы, мне нужно проверить, находится ли выбранный мной экземпляр, который я пытаюсь получить, или нет.
Например, я попытался это, но он не работает (она всегда возвращает ложь)
private bool SpalteExistiert(FbDataReader Reader, string MyColumnName)
{
return Reader.GetSchemaTable()
.Rows
.OfType<DataRow>()
.Any(row => row["ColumnName"] == MyColumnName);
}
Когда я пытаюсь его обычным способом, как getOrdinal
или просто Reader["MyCustomColum"]
и попытаться проверить, если она равна нулю, я получить исключение IndexOutOfBounds, когда столбец не был в исключении. Я знаю, что один из способов будет поймать исключение, но это не так, как я хочу, и все-таки я не могу поверить, что нет другого пути, чтобы проверить, если Колум доступен
Спасибо
Почему бы не обрабатывать исключения ? –
Как я уже сказал, я не могу поверить, что язык не предлагает другого способа сделать это. И другая причина в том, что программирование, в котором я полагаюсь на исключения, - это не тот стиль, который я предпочитаю :) – user3466562
Пробовал ли вы использовать коллекцию Columns, а не 'Rows'? Что-то вроде 'Reader.GetSchemaTable() .Columns .OfType() .Any (столбец => column.ColumnName == MyColumnName);' –
Michael