将简单的SelectMany转换为查询语法

以下是SelectMany()的简单forms。 如果我们可以将其转换为查询语法怎么样?

 var array = new string[] { "Shaun", "Luttin" }; array .SelectMany( s => s ); 

我能做的最好的产生相同的输出,但引入了一个新的变量c

 var query = from s in array.AsQueryable() from c in s select c; 

…并产生以下流利语法。

 array .SelectMany ( s => s, (s, c) => c ); 

回复:可能重复

我已经阅读了Queryable.SelectMany()方法是否有C#LINQ语法的答案? 我担心答案’翻译’不能编译回原始的流利语法

编译器执行转换以将查询语法转换为方法语法。 详细信息在C#5规范的第7.6.12节中规定。 快速搜索只会出现几个可能导致调用SelectMany ,所有内容都在7.6.12.4节中:

带有第二个from子句后跟select子句的查询表达式:
来自e1中的x1
来自e2中的x2
选择v
被翻译成( e1 ) . SelectMany( x1 => e2 , ( x1 , x2 ) => v ) ( e1 ) . SelectMany( x1 => e2 , ( x1 , x2 ) => v )

带有第二个from子句的查询表达式,后跟select子句以外的其他内容:
来自e1中的x1
来自e2中的x2

被翻译成
from * in ( e1 ) . SelectMany( x1 => e2 , ( x1 , x2 ) => new { x1 , x2 } ) …

因此似乎没有转换导致SelectMany的其他重载被调用。