db.Profits
此方法在没有任何记录时抛出异常。如何防止爆炸页面
public double getProfitSum()
{
return db.Profits.Where(p => p.IdUser.UserId == WebSecurity.CurrentUserId).Sum(p => p.Value);
}
错误 :
转换为值类型“Double”失败,因为具体化值为 null。结果类型的泛型参数或查询必须使用可为空的类型。
db.Profits
此方法在没有任何记录时抛出异常。如何防止爆炸页面
public double getProfitSum()
{
return db.Profits.Where(p => p.IdUser.UserId == WebSecurity.CurrentUserId).Sum(p => p.Value);
}
错误 :
转换为值类型“Double”失败,因为具体化值为 null。结果类型的泛型参数或查询必须使用可为空的类型。
试试看:
var result = db.Profits.Where(p => p.IdUser.UserId == WebSecurity.CurrentUserId).Sum(p => p.Value);
if(result != null)
{
return result;
}
return 0;
原因必须是 Sum() 期望不可为空的值。但是您的结果可能会给出 null。
尝试
return db.Profits.Where(p => p.IdUser.UserId == WebSecurity.CurrentUserId
&& p.Value != null).Select(x=>(double?)x.Value).Sum() ?? 0.0M;
甚至更好
public double getProfitSum()
{
var result = db.Profits.Where(p => p.IdUser.UserId == WebSecurity.CurrentUserId
&& p.Value != null).Sum(p => p.Value);
return result == null ? 0 : result;
}