Sea*_*_05 33 .net c# exception-handling nullable linq-to-sql
在线:bool travel = fill.travel.Value;
我收到以下错误:
可以为空的对象必须具有值
而且我不确定为什么.我想要做的就是获取当前错误的旅行数据库中的值.任何帮助,将不胜感激.
using (var db = new DataClasses1DataContext())
{
var fill = (from f in db.expenseHdrs
where f.rptNo == getPkRowReport()
select f).FirstOrDefault();
txtReportDesc.Text = fill.description;
txtPeriod.Text = fill.period;
txtPurpose.Text = fill.purpose;
bool travel = fill.travel.Value;
chkTravel.Checked = travel
}
Run Code Online (Sandbox Code Playgroud)
Tej*_*ejs 47
你总是可以切换到
fill.travel.GetValueOrDefault()
Run Code Online (Sandbox Code Playgroud)
提供默认值(false)或数据库中boolean列的值.或者您可以指定带有重载的默认值.无论哪种方式,nullable当前都没有值,这就是你获得该异常的原因.
您正在尝试从不存在的对象访问属性(您的fill.travel为null,并且您从中调用prop),您可以使用coalesce运算符(.Net 4.0):
bool travel = fill.travel ?? false;
Run Code Online (Sandbox Code Playgroud)
我发生这种情况是因为有这样的代码:
bool? someVariable = (bool)someNullableBool;
Run Code Online (Sandbox Code Playgroud)
someNullableBool 为空并引发此错误。
解决方案是将其重写为:
bool? someVariable = (bool?)someNullableBool;
Run Code Online (Sandbox Code Playgroud)