【发布时间】:2012-02-20 16:06:20
【问题描述】:
我的 LINQ 中有以下代码:
where (tf.Shipped || tf.Ordered || tf.Processed)
请注意,Shipped、Ordered 和 Processed 都是可为空的布尔字段
我收到以下消息:
操作员 ||不能应用于“bool”类型的操作数?和“布尔?”
不确定如何解决这个问题,它们需要是可为空的布尔值,我需要使用 OR (||)。
【问题讨论】:
-
@DoctorMick 大量使用。假设我有一份健康评估表,询问患者是否进行了前列腺检查。这不适用于女性。不是
true或false。这是null- 在这种情况下为 N/A。 -
您期待什么?类似于与 SQL 的
NULL比较的结果?即当您的值为null时,是否应该将其简单地视为false? -
@DoctorMick 我记得在 nullables 之前,我们在名为
Troolean的代码库中有一个类型。严肃而有用。 -
如果所有人都是
null,他的期望对我来说绝对不明显。 -
@Ramhound:正如 Yuck 所暗示的,“null”有时意味着“这个东西没有真值”。 “null”也可以表示“这个东西有一个真值,但我现在不知道它是什么,因为那个信息还没有输入到数据库中”。假设 missing 值是necessarily false,这是危险的。那个订单发货了吗? “我们不知道”的答案与“不”的答案不一样!如果是,那么一开始就不需要可空值。