Linq to SQL实际上并没有运行sql,直到枚举结果为止,我得到了。但是,在下面这个例子中是什么时候发生的?这些都捆绑在一个巨大的查询中,一些如何或者是否严重将两个表中的大部分拉入内存,以便它可以执行最后一行?
result = _repository.LocationHandler.Locations(id).Where(x => x.IsActive);
paymentServiceProfiles = _repository.Context.PaymentServiceProfiles.Where(x => !x.IsDeleted && x.IsActive);
terminals = _repository.TerminalHandler.Terminals().Where(x => x.IsActive && x.PaymentServiceProfiles.Intersect(paymentServiceProfiles).Any());
result = result.Where(x => terminals.Count(y => y.LocationId == x.Id) > 0);
答案 0 :(得分:1)
所有四条线路正在准备一个大型的线路。查询。如果您以后不使用结果数据,则根本不会执行此查询。但是,正如其他人所提到的,使用SQL Server Profiler(SSMS => Tools => Sql Server Profiler)是如何自己回答这类问题的最佳方式。