Csharp/C#教程:为什么“linq to sql”查询以与常规SQL查询不同的FROM关键字开头?分享


为什么“linq to sql”查询以与常规SQL查询不同的FROM关键字开头?

为什么linq to sql查询以FROM关键字开头,而不像常规SQL查询?

LINQ模仿SQL中的Logical Query processing

 8. SELECT 9. DISTINCT 11. TOP 1. FROM 2. ON 3. JOIN 4. WHERE 5. GROUP BY 6. WITH CUBE/ROLLUP 7. HAVING 10. ORDER BY 12. OFFSET/FETCH 

但实际上它执行如下:

 1. FROM 2. ON 3. JOIN 4. WHERE 5. GROUP BY 6. WITH CUBE/ROLLUP 7. HAVING 8. SELECT 9. DISTINCT 10. ORDER BY 11. TOP 12. OFFSET/FETCH 

很多人都没有意识到这一点并犯了一些简单的错误:

 SELECT col AS alias_name FROM tab WHERE aliass_name > 10; 

并问为什么它不起作用。 因为他们认为订单就像他们写的那样。 LINQ在这方面做得更好。

另请参阅逻辑查询处理和BOL :

SELECT语句的逻辑处理顺序

以下步骤显示SELECT语句的逻辑处理顺序或绑定顺序。 此顺序确定在一个步骤中定义的对象何时可用于后续步骤中的子句。 例如,如果查询处理器可以绑定(访问)FROM子句中定义的表或视图,则这些对象及其列可供所有后续步骤使用。 相反,因为SELECT子句是步骤8,所以前面的子句不能引用该子句中定义的任何列别名或派生列。 但是,它们可以由后续子句引用,例如ORDER BY子句。 请注意,语句的实际物理执行由查询处理器确定,并且顺序可能与此列表不同。

 FROM ON JOIN WHERE GROUP BY WITH CUBE or WITH ROLLUP HAVING SELECT DISTINCT ORDER BY TOP 

有关您的问题的一些文档可以在这里找到 ,他们说它It is more similar to "foreach" 。 但是, 这是一个很好的开始和理解什么是LINQ和不同类型的LINQ的地方。

您通常会在任何地方找到以下类型的LINQ。 在这里阅读

上述就是C#学习教程:为什么“linq to sql”查询以与常规SQL查询不同的FROM关键字开头?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  1. LINQ(Linq to Objects)
  2. DLINQ(Linq to SQL)
  3. XLINQ(Linq to XML)

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1037494.html

(0)
上一篇 2022年1月25日
下一篇 2022年1月25日

精彩推荐