Existe uma sintaxe C # LINQ para o método Queryable.SelectMany ()?

88

Ao escrever uma consulta usando a sintaxe C # LINQ, há uma maneira de usar o método Queryable.SelectMany da sintaxe de palavra-chave?

Para

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

Usando métodos fluentes, eu poderia consultar

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

Existe uma sintaxe de consulta semelhante a

var tokens = from x in text selectmany s.Split(' ')
BrianCooksey
fonte
o exemplo precisa de algumas melhorias ... mas eu suspeito que ele transmita o ponto básico. Sinta-se à vontade para sugerir exemplos melhores.
BrianCooksey de

Respostas:

126

Sim, você acabou de repetir a cláusula from ... in:

var words = from str in text
            from word in str.Split(' ')
            select word;
Driis
fonte
4
@BCooksey - Sim ... porque você está selecionando de uma coleção aninhada dentro do primeiro resultado.
Justin Niessner
3
Todas essas chamadas podem ser atendidas por SelectMany, que é extremamente flexível, mas o compilador escolherá entre Select, SelectMany e até mesmo nenhuma transformação, dependendo da forma da consulta
Sprague
23

Você pode usar um Composto da Cláusula :

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