Udostępnij za pomocą


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 "As", zmieniają statyczny typ kolekcji źródłowej, ale jej 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
Obsada 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
DoListy 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 także