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