2011-06-20 12 views
67

Al escribir una consulta utilizando la sintaxis de C# LINQ, ¿hay alguna manera de utilizar el método Queryable.SelectMany a partir de la sintaxis de la palabra clave?¿Hay una sintaxis C# LINQ para el método Queryable.SelectMany()?

Para

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

Utilizando métodos fluidas que se pudo consultar

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

¿Hay una sintaxis de consulta similar a

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

el ejemplo necesita mejoras ... pero sospecho que ge ts el punto básico a través. Siéntase libre de sugerir mejores ejemplos. – BrianCooksey

Respuesta

91

Sí, sólo repite el de ... de cláusula:

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

¿C# realmente resuelve esto a SelectMany? – BrianCooksey

+3

@BCooksey - Sí ... porque está seleccionando de una colección anidada dentro del primer resultado. –

+3

Todas estas llamadas podrían ser atendidas por SelectMany, que es enormemente flexible, pero el compilador elegirá entre Select, SelectMany e incluso ninguna transformación en absoluto, dependiendo de la forma de la consulta – Sprague

13

Su consulta sería re-escribir como:

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

He aquí una buena página que tiene un par de ejemplos de lado a lado de Lambda y la sintaxis de consulta:

Select Many Operator Part 1 - Zeeshan Hirani

Cuestiones relacionadas