【发布时间】:2015-01-05 05:33:49
【问题描述】:
我想根据某些条件从表中检索 Id。如果不满足条件,我只想返回默认值(在这种情况下,我假设为 null)。这是我的代码:
int? circuitTypeId = cimsContext.CircuitTypes.FirstOrDefault(ct => ct.Name == circuitType).Id;
我假设如果ct.Name 和circuitType 之间不匹配,则返回的值为null。但是,在运行我的程序时,我在这一行收到一条错误消息,提示“空引用异常”。我知道该记录不存在,但我不应该将查询返回的null 分配给我的nullable int 变量吗?
【问题讨论】:
-
不,目前您需要在取消引用 Id 之前显式检查 null。或者你可以等待Roslyn's Elvis运营商
?.:) -
FirstOrDefault在这种情况下毫无价值,因为您正试图从潜在的null访问Id。First至少会抛出一个更好的异常。