Предложение Select (Visual Basic)

Определяет результат запроса.

Синтаксис

Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]  

Детали

var1
Необязательно. Псевдоним, который можно использовать для ссылки на результаты выражения столбца.

fieldName1
Обязательный. Имя поля, возвращаемого в результате запроса.

Замечания

Предложение можно использовать Select для определения результатов, возвращаемых из запроса. Это позволяет определить элементы нового анонимного типа, созданного запросом, или нацелиться на члены именованного типа, возвращаемого запросом. Предложение Select не требуется для запроса. Если предложение не Select указано, запрос вернет тип на основе всех элементов переменных диапазона, определенных для текущей область. Дополнительные сведения см. в статье Анонимные типы. При создании именованного типа запрос возвращает результат типа IEnumerable<T> , в котором T создается тип.

Предложение Select может ссылаться на любые переменные в текущем область. Это включает переменные диапазона, определенные в From предложении (или From предложениях). Он также включает в себя все новые переменные, созданные с псевдонимом Aggregate, Group ByLetили предложениями, или Group Join переменными из предыдущего Select предложения в выражении запроса. Предложение также может включать статические Select значения. Например, в следующем примере кода показано выражение запроса, в котором Select предложение определяет результат запроса как новый анонимный тип с четырьмя элементами: ProductName, Priceи DiscountDiscountedPrice. Значения ProductName элементов Price и берутся из переменной диапазона продуктов, определенной в предложении From . Значение DiscountedPrice члена вычисляется в предложении Let . Элемент Discount является статическим значением.

' 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

Предложение Select вводит новый набор переменных диапазона для последующих предложений запросов, а предыдущие переменные диапазона больше не находятся в область. Select Последнее предложение в выражении запроса определяет возвращаемое значение запроса. Например, следующий запрос возвращает имя компании и идентификатор заказа для каждого заказа клиента, для которого общая сумма превышает 500. Первое Select предложение определяет переменные диапазона для Where предложения и второго Select предложения. Второе Select предложение определяет значения, возвращаемые запросом, как новый анонимный тип.

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

Select Если предложение определяет один элемент для возврата, выражение запроса возвращает коллекцию типа этого отдельного элемента. Select Если предложение определяет несколько возвращаемых элементов, выражение запроса возвращает коллекцию нового анонимного типа на основе выбранных элементов. Например, следующие два запроса возвращают коллекции двух разных типов на Select основе предложения. Первый запрос возвращает коллекцию имен компаний в виде строк. Второй запрос возвращает коллекцию Customer объектов, заполненных именами компании и сведениями об адресе.

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}

Пример

Следующее выражение запроса использует From предложение для объявления переменной cust диапазона для customers коллекции. Предложение Select выбирает значение имени клиента и идентификатора и заполняет CompanyNameCustomerID столбцы новой переменной диапазона. Оператор For Each цикличен по каждому возвращаемого объекта и CustomerID отображает CompanyName столбцы для каждой записи.

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

См. также