2014-02-25 58 views
0

有时,当我尝试查找保险名称时,如果找不到,那么我希望我的InsuranceName变量具有空值。但我总是得到NullReferenceException。我可以通过将一系列if语句检查为空来避开它,是否有一行要做到这一点?实体框架 - 当发生NullReferenceException时返回空值

string InsuranceName = db.Medicares.FirstOrDefault(p => p.MedicareId = 2).Insurances.FirstOrDefault(p => p.InsuranceId = 1).Name; 
+2

通过使用'FirstOrDefault',你是令人鼓舞返回NULL如果没有找到,然后通过取消引用它('.Insurance'),你会得到一个NRE。 – StuartLC

+0

创建您自己的扩展 –

回答

1
var medicare = db.Medicares.Include(m => m.Insurances).FirstOrDefault(p => p.MedicareId == 2); 

string InsuranceName = medicare == null ? null : medicare.Insurances.FirstOrDefault(p => p.InsuranceId == 1).Name; 
+0

没有理由运行查询'db.Medicares.FirstOrDefault(p => p.MedicareId == 2)'两次,只需运行它并保存结果。 –

+0

我不喜欢这样运行两次。你能帮我举个例子吗? –

+0

我已经更新了仅用于查询一次的示例。另外,加载包含的内容还包括在枚举'Insurances'对象时不会触发另一个查询。 –