Предложение Select (Visual Basic)
Определяет результат запроса.
Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]
Части
var1
Необязательный.Псевдоним может использоваться для ссылки на результаты выражения столбца.fieldName1
Обязательный.Имя поля для возврата результатов запроса.
Заметки
Можно использовать предложение Select, чтобы определить результаты возврата из запроса.Это позволяет определить элементы нового анонимного типа, который создается при запросе, или целевые члены именованного типа, возвращаемого запросом.Предложение Select не является обязательным для запроса.Если предложение Select не указано, запрос возвращает тип, основанный на всех членах переменных диапазона для текущей области.Дополнительные сведения см. в разделе Анонимные типы (Visual Basic).Если запрос создает именованный тип, будет возвращен результат типа 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 выбирает имя и идентификатор клиента, после чего заполняет столбцы 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