SQL列的可空ReadershipLevels
- int
与空Linq to sql!运营商为int类型
level
是当地int
类型变量
&
是bitwise
操作
的LINQ to SQL
vAdvanceSearchResults = from t
in vAdvanceSearchResults
where (t.ReadershipLevels & level) > 0
select t;
如果level = 32
以上Linq查询生成的SQL如下图所示:
SELECT [t2].[ReadershipLevels],[t2].[ID], [t2].[ISBN], [t2].[IsHighlighted], [t2].[Title],
FROM (
SELECT DISTINCT [t1].[ID], [t1].[ISBN], [t1].[IsHighlighted], [t1].[Title], [t1].[SuluAuthors],
FROM [dbo].[udf_SearchDWSearch]('swim', 'ALL') AS [t0]
INNER JOIN [dbo].[DWSearch] AS [t1] ON [t0].[DWSearchID] = ([t1].[ID])
WHERE [t1].[DatePublished] < '2016/05/27'
) AS [t2]
WHERE ([t2].[ReadershipLevels] & 32) >0
order by [t2].[ReadershipLevels]
我想包括not
所以我喜欢下面
not ([t2].[ReadershipLevels] & 32) > 0
SELECT DISTINCT [t1].[ID], [t1].[ISBN], [t1].[IsHighlighted], [t1].[Title], [t1].[SuluAuthors],
FROM [dbo].[udf_SearchDWSearch]('swim', 'ALL') AS [t0]
INNER JOIN [dbo].[DWSearch] AS [t1] ON [t0].[DWSearchID] = ([t1].[ID])
WHERE [t1].[DatePublished] < '2016/05/27'
) AS [t2]
WHERE not ([t2].[ReadershipLevels] & 32) >0
order by [t2].[ReadershipLevels]
这是工作的精细制作。
现在我想在LINQ改变同样以SQL也
vAdvanceSearchResults = from t
in vAdvanceSearchResults
where ! (t.ReadershipLevels & level) > 0
select t;
但上面扔无差错不能申请运营商!以类型System.Nullable的操作数
改为 -
vAdvanceSearchResults = from t
in vAdvanceSearchResults
where ! (t.ReadershipLevels.Value & level) > 0
select t;
投掷无差错不能申请运营商!
于类型的操作数int
如何我在LINQ
查询添加一个!
操作?
为什么你要'''在这里。你可以像这样检查'(t.ReadershipLevels.Value&level)<0'。不大于0意味着它小于零。 –
对不起,我想用32排除所有记录,所以不使用。 – user1282609
(t.ReadershipLevels.Value&level)<0 results empty set,我想排除level = 32的记录。 – user1282609