问题描述
|
这是我今天遇到的一个问题。
我在C#中有一条声明
EmPayRollData emPayRollData = payroll.EmPayRollDatas.First();
工资单和EmPayRollData都是实体。即工资单是父级,EmPayRollData是子级。
现在我有一个声明:
companyRow.CompanyName = (empowerPayRollData == null) ? string.Empty : empowerPayRollData.Name;
我收到一个尖锐的评论,说:“表达总是错误的”
解决方法
如果ѭ2be可能为空,则应改用:
payroll.EmPayRollDatas.FirstOrDefault()
如果枚举为空,则返回null。 First
在这种情况下将引发异常,因此,如果到达您要查询的代码行,则序列不为空,并且变量不能为null。
,那是因为First()
要么返回一个对象,要么返回一个对象,否则将抛出异常。 Resharper知道,如果到达那条线,那么enabledPayRollData不会为null。在这种情况下,您可以考虑使用FirstOrDefault
。
,Resharper可能知道ѭ7会导致非null或异常。
由此可以推断出表达式将始终为假。
如果期望结果集为空,请使用.FirstOrDefault()