Для LinqToSQL это 0 true или 1 (для типа Bit)? - PullRequest
0 голосов
/ 17 марта 2010

У меня есть столбец типа Bit (в этом примере он называется BBoolVal).

У меня есть оператор LinqToSQL, например:

var query = List<MyClass> myList = _ctx.DBList
              .Where(x => x.AGuidID == paramID) 
              .Where(x => x.BBoolVal == false);

Когда я смотрю на sql, он заканчиваетсявот так (я добавил интервал и изменил имена):

SELECT    [t0].[Id], [t0].[AGuidID], [t0].[OtherIDID], 
          [t0].[TimeColumn], [t0].[BBoolVal], [t0].[MoreID]
FROM      [dbo].[MyTable] AS [t0]
WHERE (NOT ([t0].[BBoolVal] = 1)) AND ([t0].[AGuidID] = @p0)

Поскольку мой x.BBoolVal == false переводится как [BBoolVal] == 1, я получаю, что false = 1 (и, следовательно, true = 0).

Я спрашиваю, потому что это кажется мне немного отсталым.Я в порядке, чтобы принять это, я просто хочу быть уверен.

Ответы [ 3 ]

4 голосов
/ 17 марта 2010

Перед вашим [BBoolVal] = 1 стоит NOT, так что это все, как вы изначально ожидали - логическое true равно 1, а false, вероятно, равно нулю.

2 голосов
/ 17 марта 2010

Обратите внимание, что там написано ГДЕ ( НЕ ([t0]. [BBoolVal] = 1)) И ([t0]. [AGuidID] = @ p0)

Хотя действительно странно, что он это сделал, он фактически такой же, как [t0]. [BBoolVal] = 0

EDIT


Если подумать, то BBoolVal будет совпадать с False или NULL (при условии, что BBoolVal обнуляем).

1 голос
/ 17 марта 2010

1 - истина, 0 - ложь; но Bool.Parse () работает со значением .ToString ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...