Преобразование типов данных (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