检查属性为null LINQ

时间:2015-08-18 10:18:36

标签: c# .net linq

我有以下代码从数据库中提供数据:

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 会在内部加入中翻译,这个检查是不必要的?

1 个答案:

答案 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();