LINQ 不评估对空对象的检查

LINQ not evaluating check for null object

我想知道为什么我的 linq 语句没有正确评估 Agency 对象的 null 检查,该对象是 Users 模型的 属性。

var invalidUsers = this.DbContext.Users.Where(p => p.Agency != null).ToList();    
var invalidUsersList = invalidUsers.Where(p => p.Agency != null).ToList();

当我 运行 上面的代码时,第一行 returns 所有用户的列表,无论 Agency 对象是否为 null。但是,第二行执行并正确过滤列表和 returns 一个列表,该列表正确返回 Agency 不为空的用户。

可能是因为这似乎是一个外键 table 您需要先将它包含在 LINQ 中以便它可以查询它。

类似的东西。

var invalidUsers = await this.DbContext.Users
.Include(p => p.Agency)
.Where(p => p.Agency != null)
.ToListAsync();  

试一试,看看是否有帮助。