【问题标题】:LINQ to SQL - Am I fetching or manipulating local data?LINQ to SQL - 我是在获取或操作本地数据吗?
【发布时间】:2018-08-16 09:23:42
【问题描述】:

在我现在拥有的一些代码上,我们正在执行我们的 LINQ to 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")
   orderby c.Name
   select c.Name.ToUpper();

我担心我们在当前代码中获取整个表,然后在本地对其进行操作,从我的角度来看,与让 SQL 服务器执行此操作相比效率不高。

这两个例子是等价的还是有区别的?

【问题讨论】:

  • 两者是等价的

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


【解决方案1】:

在发现我正在搜索的内容称为“linq vs. method chaining”后,我在这里找到了答案:

.NET LINQ query syntax vs method chain

问题是方法链接和 linq 查询之间是否存在差异,正如我在问题中所描述的那样。

答案是没有没有,你可以随意使用这两种方法。评论提到编译时间可能存在细微差别,但这不是我关心的问题。

【讨论】:

  • 你应该描述链接,因为链接可能有一天会失效
【解决方案2】:

这可能是多余的信息,但在这两个代码块中,您不会从数据库中获取任何信息。此时,您只需告诉 LINQ 它应该运行什么查询。要实际运行查询,您需要添加对 .First、.FirstOrDefault、.Single、.SingleOrDefault、.ToList 或它们的异步对应项的调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多