Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Методы преобразования изменяют тип входных объектов.
Операции преобразования в запросах 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