我有以下代码从数据库中提供数据:
var t = (from ula in proxy.eUserLoginAttempts
where ula.Date >= DateTime.Now && ula.Email.ToLower().Contains("")
&& ula.User != null
&& ula.User.Client != null
&& ula.User.Client.prStatus == 1
select ula).ToList();
在这种情况下,我会从客户端实体获取prStatus,如果它们不为null,我会检查User和Client对象。我应该这样做还是 ula.User.Client.prStatus 会在内部加入中翻译,这个检查是不必要的?
答案 0 :(得分:3)
回答你的直接问题:不,你应该首先测试可空的...... 关于你的代码,我确实建议一种可读的方式:
var t = proxy.eUserLoginAttempts
.Where(ula => ula.Date >= DateTime.Now)
.Where(ula => !string.IsNullOrEmpty(ula.Email))
.Where(ula => ula.User != null)
.Where(ula => ula.User.Client != null)
.Where(ula => ula.User.Client.prStatus == 1)
.ToList();
或者更好的C#6
var t = proxy.eUserLoginAttempts
.Where(ula => ula.Date >= DateTime.Now)
.Where(ula => !string.IsNullOrEmpty(ula.Email))
.Where(ula => ula.User?.Client?.prStatus == 1)
.ToList();