表达式始终为false

问题描述

| 这是我今天遇到的一个问题。 我在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()