C# LINQ中是否有Queryable.SelectMany()方法的语法?

99

使用C# LINQ语法编写查询时,是否可以从关键字语法中使用Queryable.SelectMany方法?

对于

string[] text = { "Albert was here", 
                  "Burke slept late", 
                  "Connor is happy" };

使用流畅的方法,我可以查询

var tokens = text.SelectMany(s => s.Split(' '));

是否有类似于的查询语法

var tokens = from x in text selectmany s.Split(' ')

例子还需要改进...但我怀疑它已经表达了基本观点。欢迎提出更好的例子。 - BrianCooksey
3个回答

140
是的,你只需要重复from ... in子句:
var words = from str in text
            from word in str.Split(' ')
            select word;

4
是的,因为你正在从第一个结果中嵌套的集合中选择。 - Justin Niessner
3
所有这些调用都可以通过使用SelectMany来处理,它具有极大的灵活性,但编译器将根据查询的形式在Select、SelectMany甚至不进行任何转换之间做出选择。 - Sprague

24

你可以使用 复合from子句

var tokens = from s in text
             from x in s.Split(' ')
             select x;

19

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接