Entity Framework SQL 查询生成

Entity Framework SQL Query Generation

我很难理解 Entity Framework 如何从几个 Linq 方法生成单个 SQL 查询。这是从 table.

中选择用户名的代码
        var result1 = context.UserMasters
                             .Where(t => t.UserRole == "LOCAL")
                             .Skip(100)
                             .Take(100)
                             .Select(t => new { t.UserName }); 

通常上面的代码与下面的代码相同。

        var test = context.UserMasters.Where(t=> t.UserRole == "LOCAL");
        test = test.Skip(100);
        test = test.Take(100);
        var result2 = test.Select(t => new { t.UserName });

我希望我们可以在任何 Linq 方法之后从 table 中得到结果。所以总是有一个列表随时可用。是不是先从table中选出所有结果,然后对list进行运算?

如果类型是IQueryable,那么数据的过滤发生在数据库端。但是,如果查询类型是 IEnumerable 或 IQueryable 以外的类型,则会提取 table 中的所有数据,并在 .Net 端完成过滤。在这些情况下,始终建议使用 IQueryable。请阅读 IQueryable 和 IEnumerable 的区别。