LINQ to EF - 为什么此查询会将所有数据拉回计数?

Jas*_*and 4 linq-to-entities entity-framework

使用EF 3.5 - 为什么第一个查询似乎生成SELECT COUNT(*)...而第二个查询似乎在执行where之前撤回所有数据?

        var model = new SageEntities();

        Func<nltranm, bool> marked_as_extracted =
            n => n.history_ref != null;

        // SELECT COUNT(*) ?
        var records_marked_as_extracted_quick = model.nltranm.Where(n => n.history_ref != null).Count();

        // Pull back all data and the count ...
        var records_marked_as_extracted_slow = model.nltranm.Where(marked_as_extracted).Count();
Run Code Online (Sandbox Code Playgroud)

San*_*ken 6

要解决此问题,您应该将其更改Func<T1, TResult>Expression<Func<T1, TResult>>.请参阅此其他问题以解释原因