Select Tümcesi (Visual Basic)
Sorgunun sonucunu tanımlar.
Sözdizimi
Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]
Parça
var1
isteğe bağlı. Sütun ifadesinin sonuçlarına başvurmak için kullanılabilecek bir diğer ad.
fieldName1
Gerekli. Sorgu sonucunda döndürülecek alanın adı.
Açıklamalar
Sorgudan döndürülecek sonuçları tanımlamak için yan tümcesini kullanabilirsiniz Select
. Bu, sorgu tarafından oluşturulan yeni bir anonim türün üyelerini tanımlamanızı veya sorgu tarafından döndürülen adlandırılmış türün üyelerini hedeflemenizi sağlar. Yan Select
tümcesi sorgu için gerekli değildir. Herhangi Select
bir yan tümce belirtilmezse, sorgu geçerli kapsam için tanımlanan aralık değişkenlerinin tüm üyelerini temel alan bir tür döndürür. Daha fazla bilgi için bkz . Anonim Türler. Sorgu adlandırılmış bir tür oluşturduğunda, oluşturulan tür olan T
türün IEnumerable<T> sonucunu döndürür.
yan tümcesi Select
geçerli kapsamdaki tüm değişkenlere başvurabilir. Bu, yan tümcesinde From
(veya From
yan tümcelerinde) tanımlanan aralık değişkenlerini içerir. Ayrıca, , Let
, veya yan tümceleri tarafından Aggregate
bir diğer adla oluşturulan yeni değişkenleri veya Group Join
sorgu ifadesindeki önceki Select
bir yan tümceden değişkenleri Group By
içerir. Yan tümcesi Select
statik değerler de içerebilir. Örneğin, aşağıdaki kod örneğinde yan tümcesinin Select
sorgu sonucunu dört üyeli yeni bir anonim tür olarak tanımladığı bir sorgu ifadesi gösterilmektedir: ProductName
, Price
, Discount
ve DiscountedPrice
. ProductName
ve Price
üye değerleri yan tümcesinde From
tanımlanan ürün aralığı değişkeninden alınır. Üye DiscountedPrice
değeri yan tümcesinde Let
hesaplanır. Discount
Üye statik bir değerdir.
' 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
yan tümcesi Select
, sonraki sorgu yan tümceleri için yeni bir aralık değişkenleri kümesi sunar ve önceki aralık değişkenleri artık kapsam içinde değildir. Sorgu ifadesindeki son Select
yan tümcesi, sorgunun dönüş değerini belirler. Örneğin, aşağıdaki sorgu toplam değeri 500'ü aşan her müşteri siparişi için şirket adını ve sipariş kimliğini döndürür. birinci Select
yan tümce yan tümcesi ve ikinci Select
yan tümcesi Where
için aralık değişkenlerini tanımlar. İkinci Select
yan tümce, sorgu tarafından döndürülen değerleri yeni bir anonim tür olarak tanımlar.
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
Yan tümcesi Select
döndürülecek tek bir öğe tanımlarsa, sorgu ifadesi bu tek öğenin türünde bir koleksiyon döndürür. Select
Yan tümcesi döndürülecek birden çok öğeyi tanımlarsa, sorgu ifadesi seçilen öğelere göre yeni bir anonim tür koleksiyonu döndürür. Örneğin, aşağıdaki iki sorgu yan tümcesine Select
göre iki farklı türde koleksiyonlar döndürür. İlk sorgu, dize olarak bir şirket adları koleksiyonu döndürür. İkinci sorgu, şirket adları ve adres bilgileriyle doldurulmuş bir nesne koleksiyonu Customer
döndürür.
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}
Örnek
Aşağıdaki sorgu ifadesi, koleksiyon için bir From
aralık değişkeni cust
bildirmek üzere bir yan tümcesi customers
kullanır. Select
yan tümcesi müşteri adı ve kimlik değerini seçer ve yeni aralık değişkeninin CompanyName
ve CustomerID
sütunlarını doldurur. deyimi döndürülen For Each
her nesnenin üzerinde döngü oluşturur ve her kaydın CompanyName
ve CustomerID
sütunlarını görüntüler.
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