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.
Definiuje wynik zapytania.
Składnia
Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]
Części
var1
Opcjonalny. Alias, który może służyć do odwołowania się do wyników wyrażenia kolumny.
fieldName1
To jest wymagane. Nazwa pola, które ma być zwracane w wyniku zapytania.
Uwagi
Możesz użyć klauzuli Select , aby zdefiniować wyniki, które mają być zwracane z zapytania. Dzięki temu można zdefiniować elementy członkowskie nowego typu anonimowego utworzonego przez zapytanie lub kierować do elementów członkowskich nazwanego typu zwracanego przez zapytanie. Klauzula nie jest wymagana Select dla zapytania. Jeśli nie Select określono klauzuli, zapytanie zwróci typ na podstawie wszystkich elementów członkowskich zmiennych zakresu zidentyfikowanych dla bieżącego zakresu. Aby uzyskać więcej informacji, zobacz Typy anonimowe. Gdy zapytanie tworzy nazwany typ, zwróci wynik typu IEnumerable<T> , w którym T jest tworzony typ.
Klauzula Select może odwoływać się do dowolnych zmiennych w bieżącym zakresie. Obejmuje to zmienne zakresu zidentyfikowane w klauzuli From (lub From klauzulach). Zawiera również wszelkie nowe zmienne utworzone z aliasem według Aggregateklauzul , Let, Group ByGroup Join lub ze zmiennych z poprzedniej Select klauzuli w wyrażeniu zapytania. Klauzula Select może również zawierać wartości statyczne. Na przykład poniższy przykład kodu przedstawia wyrażenie zapytania, w którym Select klauzula definiuje wynik zapytania jako nowy typ anonimowy z czterema elementami członkowskimi: ProductName, Price, Discounti DiscountedPrice. Wartości ProductName składowe i Price są pobierane ze zmiennej zakresu produktów zdefiniowanej w klauzuli From . Wartość DiscountedPrice elementu członkowskiego jest obliczana w klauzuli Let . Element Discount członkowski jest wartością statyczną.
' 10% discount
Dim discount_10 = 0.1
Dim priceList =
From product In products
Let DiscountedPrice = product.UnitPrice * (1 - discount_10)
Select product.ProductName, Price = product.UnitPrice,
Discount = discount_10, DiscountedPrice
Klauzula Select wprowadza nowy zestaw zmiennych zakresu dla kolejnych klauzul zapytania, a poprzednie zmienne zakresu nie są już w zakresie.
Select Ostatnia klauzula w wyrażeniu zapytania określa wartość zwracaną zapytania. Na przykład następujące zapytanie zwraca nazwę firmy i identyfikator zamówienia dla każdego zamówienia klienta, dla którego suma przekracza 500.
Select Pierwsza klauzula identyfikuje zmienne zakresu klauzuli Where i drugą Select klauzulę. Druga Select klauzula identyfikuje wartości zwracane przez zapytanie jako nowy typ anonimowy.
Dim customerList = From cust In customers, ord In cust.Orders
Select Name = cust.CompanyName,
Total = ord.Total, ord.OrderID
Where Total > 500
Select Name, OrderID
Jeśli klauzula Select identyfikuje pojedynczy element do zwrócenia, wyrażenie zapytania zwraca kolekcję typu tego pojedynczego elementu. Jeśli klauzula Select identyfikuje wiele elementów do zwrócenia, wyrażenie zapytania zwraca kolekcję nowego typu anonimowego na podstawie wybranych elementów. Na przykład następujące dwa zapytania zwracają kolekcje dwóch różnych typów na podstawie klauzuli Select . Pierwsze zapytanie zwraca kolekcję nazw firm jako ciągów. Drugie zapytanie zwraca kolekcję Customer obiektów wypełnionych nazwami firmy i informacjami o adresach.
Dim customerNames = From cust In customers
Select cust.CompanyName
Dim customerInfo As IEnumerable(Of Customer) =
From cust In customers
Select New Customer With {.CompanyName = cust.CompanyName,
.Address = cust.Address,
.City = cust.City,
.Region = cust.Region,
.Country = cust.Country}
Przykład
Następujące wyrażenie zapytania używa klauzuli w From celu zadeklarowania zmiennej cust zakresu dla kolekcji customers . Klauzula Select wybiera nazwę klienta i wartość identyfikatora oraz wypełnia CompanyName kolumny i CustomerID nowej zmiennej zakresu. Instrukcja For Each wykonuje pętle dla każdego zwróconego obiektu i wyświetla CompanyName kolumny i CustomerID dla każdego rekordu.
Sub SelectCustomerNameAndId(ByVal customers() As Customer)
Dim nameIds = From cust In customers
Select cust.CompanyName, cust.CustomerID
For Each nameId In nameIds
Console.WriteLine(nameId.CompanyName & ": " & nameId.CustomerID)
Next
End Sub