Поделиться через


Преобразование типов данных (Visual Basic)

Методы преобразования изменяют тип входных объектов.

Операции преобразования в запросах LINQ полезны в различных приложениях. Ниже приведены некоторые примеры.

  • Метод Enumerable.AsEnumerable можно использовать, чтобы скрыть настраиваемую реализацию типа стандартного оператора запроса.

  • Метод Enumerable.OfType позволяет использовать непараметризованные коллекции для запросов LINQ.

  • Методы Enumerable.ToArray, Enumerable.ToDictionary, Enumerable.ToList и Enumerable.ToLookup можно использовать для принудительного немедленного выполнения запроса, не дожидаясь, пока этот запрос будет перечислен.

Методы

В следующей таблице перечислены методы стандартных операторов запросов, выполняющие преобразование типов данных.

Методы преобразования в этой таблице, имена которых начинаются с "As", изменяют статический тип исходной коллекции, но не перечисляют его. Методы, имена которых начинаются с "To", перечисляют исходную коллекцию и помещают элементы в соответствующий тип коллекции.

Имя метода Описание Синтаксис выражения запроса Visual Basic Дополнительная информация
AsEnumerable Возвращает входное значение, типизированное как IEnumerable<T>. Неприменимо. Enumerable.AsEnumerable
AsQueryable Преобразует IEnumerable (универсальный шаблон) в IQueryable (универсальный шаблон). Неприменимо. Queryable.AsQueryable
Актёрский состав Приводит элементы коллекции к указанному типу. From … As … Enumerable.Cast

Queryable.Cast
OfType Фильтрует значения в зависимости от возможности их приведения к указанному типу. Неприменимо. Enumerable.OfType

Queryable.OfType
ToArray Преобразует коллекцию в массив. Этот метод принудительно выполняет запрос. Неприменимо. Enumerable.ToArray
ToDictionary Помещает элементы в Dictionary<TKey,TValue> в зависимости от функции выбора ключа. Этот метод принудительно выполняет запрос. Неприменимо. Enumerable.ToDictionary
ToList Преобразует коллекцию в List<T>. Этот метод принудительно выполняет запрос. Неприменимо. Enumerable.ToList
ToLookup Помещает элементы в Lookup<TKey,TElement> (словарь "один ко многим") в зависимости от функции выбора ключа. Этот метод принудительно выполняет запрос. Неприменимо. Enumerable.ToLookup

Пример синтаксиса выражения запроса

В следующем примере кода конструкция From As используется для приведения одного типа к подтипу другого перед доступом к члену, который доступен только в подтипе.

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

См. также