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

Обновлен: Ноябрь 2007

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

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

Компоненты

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

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

Заметки

Можно использовать предложение Select, чтобы определить результаты возврата из запроса. Это позволяет определить элементы нового анонимного типа, который создается при запросе, или целевые члены именованного типа, возвращаемого запросом. Предложение Select не является обязательным для запроса. Если предложение Select не указано, запрос возвращает тип, основанный на всех членах переменных диапазона для текущей области. Дополнительные сведения см. в разделе Анонимные типы. Если запрос создает именованный тип, будет возвращен результат типа IEnumerable<T> где 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 выбирает имя и идентификатор клиента, после чего заполняет столбцы Name и ID новой переменной диапазона. Оператор For Each просматривает каждый возвращаемый объект и отображает столбцы Name и ID для каждой записи.

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

См. также

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

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

Анонимные типы

Ссылки

Условие From (Visual Basic)

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

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

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

Запросы (Visual Basic)