Konwertowanie typów danych (Visual Basic)

Metody konwersji zmieniają typ obiektów wejściowych.

Operacje konwersji w zapytaniach LINQ są przydatne w różnych aplikacjach. Poniżej przedstawiono kilka przykładów:

Metody

W poniższej tabeli wymieniono standardowe metody operatorów zapytań, które wykonują konwersje typów danych.

Metody konwersji w tej tabeli, których nazwy zaczynają się od "Jako", zmieniają statyczny typ kolekcji źródłowej, ale nie wyliczają. Metody, których nazwy zaczynają się od "Do", wyliczają kolekcję źródłową i umieszczają elementy w odpowiednim typie kolekcji.

Nazwa metody opis Składnia wyrażeń zapytań języka Visual Basic Więcej informacji
Asenumerable Zwraca dane wejściowe wpisane jako IEnumerable<T>. Nie dotyczy. Enumerable.AsEnumerable
Asqueryable Konwertuje (ogólny) IEnumerable na (ogólny) IQueryable. Nie dotyczy. Queryable.AsQueryable
Rzutowanie Rzutuje elementy kolekcji na określony typ. From … As … Enumerable.Cast

Queryable.Cast
Oftype Filtruje wartości w zależności od ich możliwości rzutowania do określonego typu. Nie dotyczy. Enumerable.OfType

Queryable.OfType
Toarray Konwertuje kolekcję na tablicę. Ta metoda wymusza wykonywanie zapytań. Nie dotyczy. Enumerable.ToArray
Todictionary Umieszcza elementy w oparciu Dictionary<TKey,TValue> o funkcję selektora kluczy. Ta metoda wymusza wykonywanie zapytań. Nie dotyczy. Enumerable.ToDictionary
Tolist Konwertuje kolekcję na .List<T> Ta metoda wymusza wykonywanie zapytań. Nie dotyczy. Enumerable.ToList
Tolookup Umieszcza elementy w słowniku Lookup<TKey,TElement> (jeden do wielu) na podstawie funkcji selektora kluczy. Ta metoda wymusza wykonywanie zapytań. Nie dotyczy. Enumerable.ToLookup

Przykład składni wyrażenia zapytania

Poniższy przykład kodu używa klauzuli , From As aby rzutować typ do podtypu przed uzyskaniem dostępu do elementu członkowskiego, który jest dostępny tylko w podtypie.

Class Plant
    Public Property Name As String
End Class

Class CarnivorousPlant
    Inherits Plant
    Public Property TrapType As String
End Class

Sub Cast()

    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 query = From plant As CarnivorousPlant In plants
                Where plant.TrapType = "Snap Trap"
                Select plant

    Dim sb As New System.Text.StringBuilder()
    For Each plant In query
        sb.AppendLine(plant.Name)
    Next

    ' Display the results.
    MsgBox(sb.ToString())

    ' This code produces the following output:

    ' Venus Fly Trap
    ' Waterwheel Plant

End Sub

Zobacz też