【发布时间】:2012-04-18 09:56:23
【问题描述】:
我有以下 LINQ 查询
from p in dc.Purchases
where invoiceNumber == null || p.InvNumber == invoiceNumber.Value
select p;
'invoiceNumber' 是一个可为 null 的 int - 当它为 null 时,程序会抛出一个 'Nullable object must have a value error'。当它首先明确检查它是否为空时,为什么会这样?有没有办法解决这个问题?
谢谢,
【问题讨论】:
-
把空检查改成
invoiceNumber.HasValue有什么区别吗? -
您使用的是什么 Linq 提供程序? linq to sql、实体框架、linq to objects ... ?
-
LINQ to SQL。使用 HasValue 时没有区别
-
只是猜测,但可能是 || 的顺序评估,如果您尝试 p.InvNumber == invoiceNumber.Value || 会发生什么invoiceNumber == null ?
-
如果将 'p.InvNumber == invoiceNumber.Value' 替换为 'p.InvNumber == invoiceNumber' 会发生这种情况吗?
标签: c# linq linq-to-sql