为什么“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)!
- LINQ(Linq to Objects)
- DLINQ(Linq to SQL)
- XLINQ(Linq to XML)
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1037494.html