我有以下代码.我收到错误:
"转换为值类型'Int32'失败,因为具体化值为null.结果类型的泛型参数或查询必须使用可空类型."
当CreditHistory表没有记录时.
var creditsSum = (from u in context.User
join ch in context.CreditHistory on u.ID equals ch.UserID
where u.ID == userID
select ch.Amount).Sum();
Run Code Online (Sandbox Code Playgroud)
如何修改查询以接受空值?
码:
double cafeSales = db.InvoiceLines
.Where(x =>
x.UserId == user.UserId &&
x.DateCharged >= dateStart &&
x.DateCharged <= dateEnd)
.Sum(x => x.Quantity * x.Price);
Run Code Online (Sandbox Code Playgroud)
错误:
转换为值类型"Double"失败,因为实现值为null.结果类型的泛型参数或查询必须使用可空类型.
我已经看到了什么:
我做了什么:
double cafeSales = db.InvoiceLines
.Where(x =>
x.UserId == user.UserId &&
x.DateCharged >= dateStart &&
x.DateCharged <= dateEnd)
.DefaultIfEmpty()
.Sum(x => x.Quantity * x.Price);
Run Code Online (Sandbox Code Playgroud)
和:
double? cafeSales = db.InvoiceLines
.Where(x =>
x.UserId == user.UserId &&
x.DateCharged >= dateStart &&
x.DateCharged <= dateEnd)
.Sum(x => x.Quantity * x.Price);
Run Code Online (Sandbox Code Playgroud)
这些都不奏效.我知道问题的原因是该表中没有我传入的UserId中的行.在这种情况下,我更喜欢Sum()只返回0给我.有任何想法吗?