Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
Metoda Enumerable.AsEnumerable może służyć do ukrywania niestandardowej implementacji typu standardowego operatora zapytania.
Metoda Enumerable.OfType może służyć do włączania nieparametryzowanych kolekcji na potrzeby wykonywania zapytań LINQ.
Metody Enumerable.ToArray, , Enumerable.ToDictionaryEnumerable.ToListi Enumerable.ToLookup mogą służyć do wymuszania natychmiastowego wykonywania zapytania zamiast odroczenia go do momentu wyliczenia zapytania.
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