我有以下LINQ查询
from p in dc.Purchases
where invoiceNumber == null || p.InvNumber == invoiceNumber.Value
select p;
'invoiceNumber'是一个可为null的int-当它为null时,程序将引发'Nullable对象必须具有值错误'。为什么在显式检查它是否首先为null时为什么会这样?有没有解决的办法?
谢谢,
最佳答案
我认为您的查询有问题。根据您提供的代码,我假设invoiceNumber
是局部变量或参数。如果是这种情况,那您为什么还要检查查询中是否有invoiceNumber == null
?此类检查应与查询分开进行:
if(invoiceNumber == null)
{
return dc.Purchases;
// the query would evaluate to this because invoiceNumber == null will allways return true.
}
else
{
return
from p in dc.Purchases
where p.InvNumber == invoiceNumber.Value
select p;
}
关于c# - 可空对象必须具有值-为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10207023/