Поделиться через


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

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

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

Части

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

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

Заметки

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

Предложение Select может ссылаться на переменные в текущей области. Это включает диапазон переменных, определенных в предложении From (или в предложениях From). Также включаются любые новые переменные, созданные с псевдонимом с помощью предложений Aggregate, Let, Group By или Group Join, и переменные из предыдущего предложения Select в выражении запроса. Предложение Select может также включать статические значения. Например, ниже приведен пример выражения запроса, в котором предложение Select определяет результат запроса как новый анонимный тип с четырьмя элементами: ProductName, Price, Discount и DiscountedPrice. Значения членов 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 выбирает имя и идентификатор клиента, после чего заполняет столбцы CompanyName и CustomerID новой переменной диапазона. Оператор For Each просматривает каждый возвращаемый объект и отображает столбцы CompanyName и CustomerID для каждой записи.

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

См. также

Ссылки

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

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

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

Основные понятия

Знакомство с LINQ в Visual Basic

Анонимные типы (Visual Basic)

Другие ресурсы

Запросы (Visual Basic)