2010-01-27 9 views

Respuesta

16

Sólo declaran con la propia variable:

var query = from string text in collection 
      where text.Length > 5 
      select text.ToUpper(); 

Esto se traducirá en:

var query = collection.Cast<string>() 
         .Where(text => text.Length > 5) 
         .Select(text => text.ToUpper()); 
+0

Estaba intentando esto en una colección de números almacenada como cadenas 'var numbers = new [] {" 1 "," 2 "," 3 "," 4 "," 5 "}' pero esta consulta LINQ 'numbers.Cast () .Where ((int i, int index) => index> 2 && i> 3); 'throws' InvalidCastException'. la cadena "1" debería ser convertible a numérica 1. ¿No es así? Si esto no funciona, ¿dónde sería realmente útil este operador de Cast en consultas LINQ? – RBT

+1

@RBT: No, no puedes convertir desde una cadena a un int. Desea comenzar con 'numbers.Select (text => int.Parse (text))' para que tenga un 'IEnumerable ' con que trabajar. El operador 'Cast' es útil cuando los moldes son útiles en el código normal. –

Cuestiones relacionadas