我有以下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/

10-11 01:53