Seb*_*ank 2 c# asp.net-mvc decimal linq-to-sql
我正在.NET 4 MVC 2中为办公室桌上足球桌构建一个小应用程序.我有一个使用LINQ to SQL汇总一列(十进制)的所有值的方法.它看起来像这样:
public decimal GetPlayerRating(int id)
{
var playerRating = (from r in db.Ratings
where r.PlayerID == id
select r.Points).Sum();
return playerRating;
}
Run Code Online (Sandbox Code Playgroud)
问题在于,有时当它被调用时它会返回,null因为给定的玩家在表中没有任何记录.那很好 - 在这种情况下它应该只返回零.但我得到这个错误:
无法将null值分配给类型为System.Decimal的成员,该成员是非可空值类型.
描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.InvalidOperationException:无法将null值分配给类型为System.Decimal的成员,该成员是非可空值类型.
如何告诉我的方法可以返回空值?谢谢!
尝试null coalese运算符
return playerRating ?? 0d;
Run Code Online (Sandbox Code Playgroud)
那将永远不会返回null.
如果你真的需要返回一个可以为null的值类型,尽管尝试这个
public decimal? GetPlayerRating(int id)
{ ... }
Run Code Online (Sandbox Code Playgroud)
添加一个?到像double这样的值类型的末尾被重写为Nullable <type>(Nullable <double> here)
处理可空值类型时,请务必检查它是否具有值(非null)
if ( myNullableType.HasValue )
{
x = myNullableType.Value;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1567 次 |
| 最近记录: |