我有一个小程序需要对数据范围进行一些计算。该范围可能包含大约 50 万条记录。我只是查看了我的数据库,发现 agroup by
已执行。
我以为结果是在第一行执行的,后来我只是在 RAM 中处理数据。但现在我认为查询生成器结合了表达式。
var Test = db.Test.Where(x => x > Date.Now.AddDays(-7));
var Test2 = (from p in Test
group p by p.CustomerId into g
select new { UniqueCount = g.Count() } );
在我的真实世界应用程序中,我得到了更多基于第一个查询选择的范围的子查询。我想我只是增加了很大的开销来让数据库做出不同的选择。
现在我基本上只是.ToList()
在第一个表达式之后调用。
所以我的问题是,查询构建器在构建表达式树时结合了不同的 IQueryable 是否正确?