以下是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?的答案,恐怕答案的翻译不会重新编译为原始的流利语法。
最佳答案
编译器执行转换,以将查询语法转换为方法语法。有关详细信息,请参见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
的另一个重载。
关于c# - 将简单的SelectMany转换为查询语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29639029/