Conversioni in LINQ

Gli operatori cambiano il tipo di oggetti di input e vengono utilizzati in una vasta gamma di applicazioni.

Operatore Descrizione Sintassi delle espressioni di query C # Sintassi delle espressioni di query VB
AsEnumerable Restituisce l'input digitato come IEnumerable <T> Non applicabile Non applicabile
AsQueryable Un IEnumerable (generico) viene convertito in un IQueryable (generico) Non applicabile Non applicabile
Cast Esegue il casting degli elementi di una raccolta in un tipo specificato Utilizza una variabile di intervallo tipizzata in modo esplicito. Ad esempio: dalla stringa str in parole Da ... As ...
OfType Filtra i valori in base al loro, a seconda della loro capacità di essere convertiti in un particolare tipo Non applicabile Non applicabile
ToArray Forza l'esecuzione della query e converte una raccolta in un array Non applicabile Non applicabile
ToDictionary Sulla base di una funzione di selezione della chiave imposta gli elementi in un Dictionary <TKey, TValue> e forza l'esecuzione di una query LINQ Non applicabile Non applicabile
Elencare Forza l'esecuzione di una query convertendo una raccolta in un List <T> Non applicabile Non applicabile
ToLookup Forza l'esecuzione di una query e inserisce elementi in una ricerca <TKey, TElement> sulla base di una funzione di selettore chiave Non applicabile Non applicabile

Esempio di Cast - Espressione di query

C #

using System;
using System.Linq;

namespace Operators {
   class Cast {
      static void Main(string[] args) {
      
         Plant[] plants = new Plant[] {new CarnivorousPlant { Name = "Venus Fly Trap", TrapType = "Snap Trap" },
                          new CarnivorousPlant { Name = "Pitcher Plant", TrapType = "Pitfall Trap" },
                          new CarnivorousPlant { Name = "Sundew", TrapType = "Flypaper Trap" },
                          new CarnivorousPlant { Name = "Waterwheel Plant", TrapType = "Snap Trap" }};

         var query = from CarnivorousPlant cPlant in plants
                     where cPlant.TrapType == "Snap Trap"
                     select cPlant;

         foreach (var e in query) {
            Console.WriteLine("Name = {0} , Trap Type = {1}", e.Name, e.TrapType);
         }

         Console.WriteLine("\nPress any key to continue.");
         Console.ReadKey();
      }
   }

   class Plant {
      public string Name { get; set; }
   }

   class CarnivorousPlant : Plant {
      public string TrapType { get; set; }
   }
}

VB

Module Module1
   Sub Main()

      Dim plants() As Plant = {New CarnivorousPlant With {.Name = "Venus Fly Trap", .TrapType = "Snap Trap"},
                              New CarnivorousPlant With {.Name = "Pitcher Plant", .TrapType = "Pitfall Trap"},
                              New CarnivorousPlant With {.Name = "Sundew", .TrapType = "Flypaper Trap"},
                              New CarnivorousPlant With {.Name = "Waterwheel Plant", .TrapType = "Snap Trap"}}

      Dim list = From cPlant As CarnivorousPlant In plants
                 Where cPlant.TrapType = "Snap Trap"
                 Select cPlant

      For Each e In list
         Console.WriteLine("Name = {0} , Trap Type = {1}", e.Name, e.TrapType)
      Next

      Console.WriteLine(vbLf & "Press any key to continue.")
      Console.ReadKey()
   End Sub

   Class Plant
      Public Property Name As String
   End Class

   Class CarnivorousPlant
      Inherits Plant
      Public Property TrapType As String
   End Class

End Module

Quando il codice sopra in C # o VB viene compilato ed eseguito, produce il seguente risultato:

Name = Venus Fly Trap, TrapType = Snap Trap
Name = Waterwheel Plant, TrapType = Snap Trap

Press any key to continue.