我有以下查询:C#LINQ其中可空布尔字段
where !(tf.Shipped.HasValue == true || tf.Ordered.HasValue == true || tf.Processed.HasValue == true)
注意发货,有序和加工都为空的布尔领域。
我想要做的是检查如果发货或订购或处理的值为真,他们不应该在结果中。
在我的情况Ordered是真的,但我仍然得到这个记录。不知道我做错了什么。
我有以下查询:C#LINQ其中可空布尔字段
where !(tf.Shipped.HasValue == true || tf.Ordered.HasValue == true || tf.Processed.HasValue == true)
注意发货,有序和加工都为空的布尔领域。
我想要做的是检查如果发货或订购或处理的值为真,他们不应该在结果中。
在我的情况Ordered是真的,但我仍然得到这个记录。不知道我做错了什么。
您正在检查可为空布尔型是否具有值。
如果该值为false
,则HasValue
仍然为真。
你可能想要写
where !(tf.Shipped == true || tf.Ordered == true || tf.Processed == true)
比较可空布尔变量就是一个应该写== true
的唯一案例。
但是,您可能不应该首先使用可空的布尔值。
除非你有一个有意义的区别null
和false
,你应该使用常规布尔,而不是自己节省很多头痛。
不可用的布尔有时从图书馆退出控制。在这些情况下,很高兴知道处理它们的正确方法。谢谢你的提示! – solvingJ 2017-05-18 17:53:48
你在检查'tf.Shipped'是否为真,或者它是否有值? – danihp 2012-01-27 17:39:05