Existe-t-il une syntaxe C # LINQ pour la méthode Queryable.SelectMany ()?

88

Lors de l'écriture d'une requête à l'aide de la syntaxe C # LINQ, existe-t-il un moyen d'utiliser la méthode Queryable.SelectMany à partir de la syntaxe du mot clé?

Pour

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

En utilisant des méthodes fluides, je pourrais interroger

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

Existe-t-il une syntaxe de requête semblable à

var tokens = from x in text selectmany s.Split(' ')
BrianCooksey
la source
l'exemple doit être amélioré ... mais je soupçonne qu'il fait passer le point de base. N'hésitez pas à suggérer de meilleurs exemples.
BrianCooksey

Réponses:

126

Oui, répétez simplement la clause from ... in:

var words = from str in text
            from word in str.Split(' ')
            select word;
driis
la source
4
@BCooksey - Oui ... parce que vous sélectionnez dans une collection imbriquée dans le premier résultat.
Justin Niessner
3
Tous ces appels pourraient être traités par SelectMany, qui est extrêmement flexible, mais le compilateur choisira entre Select, SelectMany et même pas de transformation du tout, selon la forme de la requête
Sprague
23

Vous pouvez utiliser un composé de la clause :

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