2010-01-27 9 views

Odpowiedz

16

Wystarczy zadeklarować go ze zmienną samego:

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

To przełoży się:

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

Próbowałem tego na zbiorze liczb przechowywanych jako ciągi 'var numbers = new [] {" 1 "," 2 "," 3 "," 4 "," 5 "}' ale to zapytanie LINQ 'numbers.Cast () .Where ((int, indeks int) => indeks> 2 i& i> 3); 'wyrzuca' InvalidCastException'. ciąg "1" powinien być zamienny na numeryczny 1. Czy nie? Jeśli to nie działa, to gdzie ten operator Cast naprawdę byłby przydatny w zapytaniach LINQ? – RBT

+1

@RBT: Nie, nie można rzutować z ciągu na int. Chcesz zacząć od 'numbers.Select (text => int.Parse (text))', dzięki czemu masz 'IEnumerable ' do pracy. Operator "Cast" jest przydatny, gdy rzuty są przydatne w normalnym kodzie. –