Вернуть логическое значение из запроса выбора - PullRequest
8 голосов
/ 23 февраля 2011

Я хотел бы выбрать логическое значение:

SELECT field1, field2, 1 as is_field
FROM TABLE

В Visual Studio 2010 я делаю:

bool b = row.Field<bool>("is_field");

Но я получаю исключение:

Указанное приведение недопустимо.

Как вернуть логическое значение как boolean, а не как int?

Ответы [ 2 ]

20 голосов
/ 23 февраля 2011

Со стороны SQL вы можете сделать:

SELECT field1, field2, CAST(1 AS BIT) AS is_field
FROM TABLE

, чтобы заставить его быть возвращенным как BIT вместо int. Это должно сделать трюк

Обновление: Каково ваше отношение к использованию CAST, как это? SQL Server очень хорош в оптимизации, например. план выполнения для вышеприведенного запроса показал бы, что is_field - это константа, которую можно вычислить сразу (здесь есть соответствующая статья: http://msdn.microsoft.com/en-us/library/ms175933.aspx). Даже без этого, если вы беспокоитесь о производительности, то вам не стоит беспокоиться об этом - это было бы очень преждевременной оптимизацией.

4 голосов
/ 24 февраля 2011

За предложение @ AdaTheDev:

bool b = row.Field<int>("is_field") == 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...