Esiste una sintassi LINQ C # per il metodo Queryable.SelectMany ()?


88

Quando si scrive una query utilizzando la sintassi C # LINQ, esiste un modo per utilizzare il metodo Queryable.SelectMany dalla sintassi della parola chiave?

Per

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

Utilizzando metodi fluenti potrei interrogare

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

Esiste una sintassi della query simile a

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

l'esempio necessita di qualche miglioramento ... ma sospetto che riesca a far capire il punto fondamentale. Sentiti libero di suggerire esempi migliori.
BrianCooksey

Risposte:


126

Sì, ripeti semplicemente la clausola from ... in:

var words = from str in text
            from word in str.Split(' ')
            select word;

4
@BCooksey - Sì ... perché stai selezionando da una raccolta annidata all'interno del primo risultato.
Justin Niessner,

3
Tutte queste chiamate potrebbero essere gestite da SelectMany, che è estremamente flessibile, ma il compilatore sceglierà tra Select, SelectMany e persino nessuna trasformazione, a seconda della forma della query
Sprague


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.