C# LINQ到SQL-我是在获取还是在操作本地数据?
在我现在看到的一些代码中,我们正在执行LINQ到SQL查询,如下所示:C# LINQ到SQL-我是在获取还是在操作本地数据?,c#,sql,linq,linq-to-sql,C#,Sql,Linq,Linq To Sql,在我现在看到的一些代码中,我们正在执行LINQ到SQL查询,如下所示: db.Customers.Where(c => c.Name.StartsWith("A")) .OrderBy(c => c.Name).Select(c => c.Name.ToUpper()); 但我看到的许多示例中,Linq to SQL代码的编写方式如下: var query = from c in db.Customers where c.Name.StartsWith ("A")
db.Customers.Where(c => c.Name.StartsWith("A"))
.OrderBy(c => c.Name).Select(c => c.Name.ToUpper());
但我看到的许多示例中,Linq to SQL代码的编写方式如下:
var query =
from c in db.Customers
where c.Name.StartsWith ("A")
orderby c.Name
select c.Name.ToUpper();
我担心的是,我们在当前代码中获取整个表,然后在本地对其进行操作,从我的角度来看,与SQL server进行操作相比,这是没有效率的
这两个例子是等效的还是有区别?在发现我搜索的是“linq vs.method chaining”之后,我在这里找到了答案: 问题是方法链接和linq查询之间是否有区别,正如我在问题中所描述的
答案是没有,你可以自由地使用这两种方法。注释提到编译时间可能会有细微的差异,但这不是我关心的问题。这可能是多余的信息,但在这两个代码块中,您无法从数据库中获得任何信息。此时,您将只告诉LINQ应该运行什么查询。要实际运行查询,您需要添加对.First、.FirstOrDefault、.Single、.SingleOrDefault、.ToList或其异步对应项的调用。两者都是等效的,您应该描述链接,因为链接可能有一天会消失