c#LINQ哪里有可以为空的布尔字段

Nat*_*Pet 6 linq

我有以下查询:

    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是真的,但我仍然得到这个记录.不确定我做错了什么.

SLa*_*aks 8

你正在检查可空的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来节省很多头痛.