C# linq查询中的合并运算符
使用null合并运算符返回错误: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
运算符“??”不能应用于“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