C# linq查询中的合并运算符

C# linq查询中的合并运算符,c#,linq-to-entities,null-coalescing-operator,C#,Linq To Entities,Null Coalescing Operator,使用null合并运算符返回错误:运算符“??”不能应用于“int”和“int”类型的操作数。 当我将鼠标悬停在days上时,它会显示(范围变量)int days var query = from date in dbdate.Dates join article in dbarticle.Articles on date.ArticleBarcode equals article

使用null合并运算符返回错误:
运算符“??”不能应用于“int”和“int”类型的操作数。

当我将鼠标悬停在
days
上时,它会显示
(范围变量)int days

var query = from date in dbdate.Dates
            join article in dbarticle.Articles on date.ArticleBarcode
                                               equals article.Barcode
            let days = article.Days
                    ?? dbgroup.Groups.Where(g => g.Number == article.GroupNumber)
                                .Select(g => g.Days).FirstOrDefault()

            where DbFunctions.AddDays(date.RunDate, days * -1) > DateTime.Now
            select article;

不能将空值存储到int中

int a = null; // error !

您需要的是一个可为空的int:

Nullable<int> a = null;
两者是等价的

在您的示例中,
article.Days
必须为空
您可以将其配置到数据库中,并且您的实体将具有可为null的int属性
然后,您将能够在linq查询中对其使用

简单的例子:

int? a = null;
int b = a ?? 5; // if a is null then store 5, otherwise store value of a

默认int不能为空。您必须为that@Justinlurman这只会造成另一个问题。DbFunctions.AddDays不起作用……如果您使用的是
,那么您别无选择,只能实现我说的内容。你的AddDays问题是另一回事。那怎么办?@Justinlurman it说:“如果发现问题,名称‘DbFunctions’在当前上下文中不存在”。我使用的是EF5,所以我要做的是使用
date.RunDate.AddDays(days*-1)
int? a = null;
int b = a ?? 5; // if a is null then store 5, otherwise store value of a