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


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

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

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

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

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

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

Методы

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

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

Имя метода Description Синтаксис выражения запроса Visual Basic Дополнительные сведения
AsEnumerable Возвращает входное значение, типизированное как IEnumerable<T>. Неприменимо. Enumerable.AsEnumerable
AsQueryable Преобразует IEnumerable (универсальный шаблон) в IQueryable (универсальный шаблон). Неприменимо. Queryable.AsQueryable
Cost Приводит элементы коллекции к указанному типу. 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

См. также