我有以下查询:
where !(tf.Shipped.HasValue == true || tf.Ordered.HasValue == true || tf.Processed.HasValue == true)
请注意,Shipped,Ordered和Processed都是可以为空的布尔字段。
我要做的是检查如果Shipped,Ordered或Processed的值为true,它们不应该在结果中。
在我的情况下Ordered是真的,但我仍然得到这些记录。不确定我做错了什么。
答案 0 :(得分:8)
您正在检查可空的bool 是否具有值
如果该值为false
,则HasValue
仍为真。
你可能想写
where !(tf.Shipped == true || tf.Ordered == true || tf.Processed == true)
比较可空的bool是唯一一个应该写== true
的情况。
但是,你可能不应该首先使用可空的bool
除非你在null
和false
之间有一个有意义的区别,否则你应该使用常规bool代替并节省很多头痛。