如果我有以下代码
MyDataContext _dataContext = new MyDataContext(MyConnectionString);
List<Airplane> entireTable = _dataContext.AirPlanes
List<Airplane> propellerPlanes = new List<Airplane>();
foreach(AirPlane p in entireTable){
if(p.IsPropellerPlane) propellerPlanes.Add(p);
}
当此代码运行时,我假设查询的处理能力来自运行该程序的计算机。
但是当这段代码运行时:
List<Airplane> propellerPlanes = _dataContext.Airplanes.Where(a => a.IsPropellerPlane).ToList();
运行查询的处理能力是来自运行程序的计算机,还是来自我已连接到我的连接字符串中的SQL Server的计算机?
答案 0 :(得分:1)
这取决于查询提供程序。通常,拥有查询提供程序的重点是将查询远程连接到另一台计算机。提供者控制着一切。查询的某些部分可能在客户端上运行。 LINQ to SQL能够做到这一点。在所有情况下,至少有几个周期将作为开销用于提供者或提供实体跟踪等功能。
答案 1 :(得分:1)
我假设您正在谈论Linq to SQL(还有其他适配器),在这种情况下,Linq to Sql驱动程序将Linq查询转换为常规的Sql查询。
所以回答这个问题,大部分工作都是由运行Sql Server的计算机完成的。