对于LinqToSQL是0或者是1(对于类型Bit)?

时间:2010-03-16 21:25:46

标签: c# visual-studio linq linq-to-sql

我有一个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 个答案:

答案 0 :(得分:4)

NOT之前有一个[BBoolVal] = 1,所以它就像你最初预期的那样 - 布尔true1false可能是零。

答案 1 :(得分:2)

注意它说WHERE( NOT ([t0]。[BBoolVal] = 1))AND([t0]。[AGuidID] = @ p0)

虽然它确实是奇怪的,但它实际上和[t0]相同。[BBoolVal] = 0

修改


考虑一下,这样BBoolVal将匹配False或NULL(假设BBoolVal可以为空)。

答案 2 :(得分:1)

1为真,0为假;但是Bool.Parse()适用于.ToString()值。