繁体   English   中英

检查属性为null LINQ

[英]Check property for null 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会在Inner Join中翻译,这个检查是不必要的?

回答你的直接问题:不,你应该首先测试可空的...关于你的代码,我确实建议一种可读的方式:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM