以下是SelectMany()
的简单形式。如果我们可以将其转换为查询语法?
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
);
重新:可能重复
我已经阅读了Is there a C# LINQ syntax for the Queryable.SelectMany() method?的答案我害怕答案'翻译不会编译回原始的流利语法。
答案 0 :(得分:3)
编译器执行转换以将查询语法转换为方法语法。详细信息在C#5规范的第7.6.12节中规定。快速搜索只会出现几个可以调用SelectMany
的翻译,所有内容都在7.6.12.4节中:
带有第二个from子句后跟select子句的查询表达式:
来自e1的x1 来自e2的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
的其他重载。