linq方法的奇怪行为.All()

时间:2017-10-26 14:46:12

标签: c# entity-framework linq asp.net-core asp.net-core-2.0

在我的Asp.Net.Core 2.0 MVC项目中,我遇到了问题。 即使我确定不应该这样做,这种方法也会返回。

private ApplicationDbContext _context;

private bool AreAllEmailsSent(DateTime deadline)
    {
        return _context.Users
            .Where(u => u.EmailConfirmed)
            .All(u => u.LastEmailSent > deadline);
    }

最奇怪的部分是当我把.ToList()它返回false,这在我的单元测试中是正确的

private bool AreAllEmailsSent(DateTime deadline)
{
    return _context.Users
        .Where(u => u.EmailConfirmed).ToList()
        .All(u => u.LastEmailSent > deadline);
}

没有编译错误或警告。我知道

_context.Users.Where()

是ApplicationUsers的IQueriable。 我知道这是一个广泛的问题,但有人可以解释为什么会发生这种情况吗?这对我来说非常危险。

0 个答案:

没有答案