Czy istnieje składnia C # LINQ dla metody Queryable.SelectMany ()?


88

Podczas pisania zapytania przy użyciu składni C # LINQ, czy istnieje sposób użycia metody Queryable.SelectMany ze składni słowa kluczowego?

Dla

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

Używając płynnych metod, mogłem zapytać

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

Czy istnieje składnia zapytania podobna do

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

przykład wymaga pewnych ulepszeń ... ale podejrzewam, że zawiera podstawowy punkt widzenia. Zapraszam do sugerowania lepszych przykładów.
BrianCooksey

Odpowiedzi:


126

Tak, wystarczy powtórzyć klauzulę from ... in:

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

4
@BCooksey - Tak ... ponieważ wybierasz z kolekcji zagnieżdżonej w pierwszym wyniku.
Justin Niessner

3
Wszystkie te wywołania mogą być obsługiwane przez SelectMany, który jest niezwykle elastyczny, ale kompilator wybierze między Select, SelectMany, a nawet bez żadnej transformacji, w zależności od formy zapytania
Sprague


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.