1)子查询是查询中的查询,因此必须以FROM子句开头,以SELECT或GROUP BY子句结束。但是我很困惑为什么我们不将那些只有FROM子句的嵌套语句视为子查询(因此它们不以SELECT或GROUP BY结尾)。
from c_2 in collection_2
的行为与子查询的行为非常相似,因为它枚举了每个collection_2
元素的整个c_1
。由于它们的行为非常相似,为什么from c_2 in collection_2
之类的语句也不被视为子查询(你可以认为子查询返回结果,但同样的参数也可以说是from c_2 in collection_2
,因为它会转换成对SelectMany
的调用吗?
var query = from c_1 in collection_1
from c_2 in collection_2
select ...
谢谢
答案 0 :(得分:1)
但也可以从collection_2中的c_2说出相同的参数,因为它确实被转换为对SelectMany的调用
不是真的。那一个电话不会转换为SelectMany
。事实上,有两个from
子句组合在一起(只有一个select
)导致它被转换为SelectMany
调用,所以整个事情是一个查询在这种情况下。如果每个from
与单个select
匹配,则它将是子查询。