LINQ查询是否使用运行程序的机器或托管数据库的服务器的处理能力?

时间:2015-07-20 22:29:06

标签: c# sql-server linq linq-to-sql

如果我有以下代码

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的计算机?

2 个答案:

答案 0 :(得分:1)

这取决于查询提供程序。通常,拥有查询提供程序的重点是将查询远程连接到另一台计算机。提供者控制着一切。查询的某些部分可能在客户端上运行。 LINQ to SQL能够做到这一点。在所有情况下,至少有几个周期将作为开销用于提供者或提供实体跟踪等功能。

答案 1 :(得分:1)

我假设您正在谈论Linq to SQL(还有其他适配器),在这种情况下,Linq to Sql驱动程序将Linq查询转换为常规的Sql查询。

所以回答这个问题,大部分工作都是由运行Sql Server的计算机完成的。