Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu konu, Visual Basic'teki Language-Integrated Sorgu (LINQ) ifadelerine ve sorguda gerçekleştirdiğiniz tipik işlem türlerinden bazılarına kısa bir giriş sağlar. Daha fazla bilgi için aşağıdaki konulara bakın:
Visual Basic'da LINQ'e
İzlenecek yol: Visual Basic'te Sorgu Yazma
Veri Kaynağını Belirtme (Kaynak)
LINQ sorgusunda ilk adım, sorgulamak istediğiniz veri kaynağını belirtmektir. Bu nedenle, sorgudaki From yan tümcesi her zaman önce gelir. Sorgu işleçleri, kaynağın türüne göre sonucu seçer ve şekillendirer.
Dim query = From cust In customers
' ...
From yan tümcesi, veri kaynağını, customersve bir aralık değişkeninicust belirtir. Aralık değişkeni bir döngü yineleme değişkeni gibidir, ancak sorgu ifadesinde gerçek yineleme gerçekleşmez. Sorgu yürütüldüğünde, genellikle bir For Each döngü kullanılarak, aralık değişkeni customers içindeki ardışık her öğeye referans görevi görür. Derleyici cust türünü çıkartabildiğinden, bunu açıkça belirtmeniz gerekmez. Açık yazma ile ve yazmadan yazılmış sorgu örnekleri için bkz. Sorgu İşlemlerinde Tür İlişkileri (Visual Basic).
Visual Basic'te yan tümcesinin From nasıl kullanılacağı hakkında daha fazla bilgi için bkz. From Yan Tümcesi.
Verileri Filtreleme (Nerede)
Büyük olasılıkla en yaygın sorgu işlemi Boole ifadesi biçiminde bir filtre uygulamaktır. Sorgu daha sonra yalnızca ifadenin doğru olduğu öğeleri döndürür.
Where bir yan tümce filtreleme gerçekleştirmek için kullanılır. Filtre, veri kaynağındaki hangi öğelerin sonuçta elde edilen diziye ekleneceği belirtir. Aşağıdaki örnekte, yalnızca Londra'da adresi olan müşteriler dahil edilir.
Dim londonCusts = From cust In customers
Where cust.City = "London"
' ...
Filtre ifadelerini bir And yan tümcesi içinde birleştirmek için Or ve Where gibi mantıksal işleçleri kullanabilirsiniz. Örneğin, yalnızca Londra'dan gelen ve adı Devon olan müşterileri döndürmek için aşağıdaki kodu kullanın:
Where cust.City = "London" And cust.Name = "Devon"
Londra veya Paris'ten müşteri döndürmek için aşağıdaki kodu kullanın:
Where cust.City = "London" Or cust.City = "Paris"
Visual Basic'te Where yan tümcesini kullanma hakkında daha fazla bilgi için bkz Where Yan Tümcesi.
Verileri Sıralama (Sırala)
Döndürülen verileri belirli bir düzende sıralamak genellikle kullanışlıdır.
Order By yan tümcesi, döndürülen dizideki öğelerin belirtilen alan veya alanlarda sıralanmasına neden olur. Örneğin, aşağıdaki sorgu sonuçları özelliğine Name göre sıralar. Bir Name dize olduğundan, döndürülen veriler A'dan Z'ye alfabetik olarak sıralanır.
Dim londonCusts1 = From cust In customers
Where cust.City = "London"
Order By cust.Name Ascending
' ...
Sonuçları ters sırada sıralamak için Z'den A'ya yan tümcesini Order By...Descending kullanın. Varsayılan değer, Ascending veya Ascending belirtilmediğinde Descending'dir.
Visual Basic'te Order By koşulunu kullanma hakkında daha fazla bilgi için bkz. Order By Koşulu.
Veri Seçimi (Seç)
Select yan tümcesi, döndürülen öğelerin biçimini ve içeriğini belirtir. Örneğin, sonuçlarınızın tam Customer nesnelerden mi, yalnızca bir özellikten Customer mi, özelliklerin bir alt kümesinden mi, çeşitli veri kaynaklarından gelen özelliklerin birleşiminden mi yoksa hesaplamaya dayalı yeni bir sonuç türünden mi oluşacağını belirtebilirsiniz.
Select yan tümcesi kaynak öğenin bir kopyası dışında bir şey ürettiğinde, işleme projeksiyon adı verilir.
Tam Customer nesnelerden oluşan bir koleksiyonu almak için aralık değişkeninin kendisini seçin:
Dim londonCusts2 = From cust In customers
Where cust.City = "London"
Order By cust.Name Ascending
Select cust
Eğer bir Customer örneği, birçok alanı olan büyük bir nesneyse ve almak istediğiniz tek şey ad ise, aşağıdaki örnekte gösterildiği gibi cust.Name öğesini seçebilirsiniz. Yerel tür çıkarımı, bunun sonuç türünü bir nesne koleksiyonundan Customer dize koleksiyonuna değiştirdiğini algılar.
Dim londonCusts3 = From cust In customers
Where cust.City = "London"
Order By cust.Name Ascending
Select cust.Name
Veri kaynağından birden çok alan seçmek için iki seçeneğiniz vardır:
Koşul ifadesinde
Select, sonuca eklemek istediğiniz alanları belirtin. Derleyici, özellikleri olarak bu alanlara sahip anonim bir tür tanımlar. Daha fazla bilgi için bkz. Anonim Türler.Aşağıdaki örnekte döndürülen öğeler anonim bir türün örnekleri olduğundan, kodunuzda başka bir yerde ada göre türe başvuramazsınız. Türü için derleyici tarafından belirlenen ad, normal Visual Basic kodunda geçerli olmayan karakterler içeriyor. Aşağıdaki örnekte, içinde sorgu
londonCusts4tarafından döndürülen koleksiyondaki öğeler anonim tür örnekleridirDim londonCusts4 = From cust In customers Where cust.City = "London" Order By cust.Name Ascending Select Name = cust.Name, Phone = cust.Phone For Each londonCust In londonCusts4 Console.WriteLine(londonCust.Name & " " & londonCust.Phone) Next-veya-
Sonuca eklemek istediğiniz belirli alanları içeren adlandırılmış bir tür tanımlayın ve
Selectifadesinde türün örneklerini oluşturup başlatın. Bu seçeneği yalnızca döndürülecekleri koleksiyonun dışında tek tek sonuçları kullanmanız gerekiyorsa veya bunları yöntem çağrılarında parametre olarak geçirmeniz gerekiyorsa kullanın. Aşağıdaki örnekteki türü IEnumerable(Of NamePhone) türüdürlondonCusts5.Public Class NamePhone Public Name As String Public Phone As String ' Additional class elements End ClassDim londonCusts5 = From cust In customers Where cust.City = "London" Order By cust.Name Ascending Select New NamePhone With {.Name = cust.Name, .Phone = cust.Phone}
Visual Basic'te yan tümcesini Select kullanma hakkında daha fazla bilgi için bkz. Yan Tümceyi Seçme.
Verileri Birleştirme (Birleştirme ve Grup Birleştirme)
Yan tümcesinde From birden fazla veri kaynağını çeşitli yollarla birleştirebilirsiniz. Örneğin, aşağıdaki kod iki veri kaynağı kullanır ve sonuçta her ikisinden de özellikleri örtük olarak birleştirir. Sorgu, soyadları sesli harfle başlayan öğrencileri seçer.
Dim vowels() As String = {"A", "E", "I", "O", "U"}
Dim vowelNames = From student In students, vowel In vowels
Where student.Last.IndexOf(vowel) = 0
Select Name = student.First & " " &
student.Last, Initial = vowel
Order By Initial
For Each vName In vowelNames
Console.WriteLine(vName.Initial & ": " & vName.Name)
Next
Uyarı
Bu kodu , Nasıl yapılır: Öğe Listesi Oluşturma bölümünde oluşturulan öğrenci listesiyle çalıştırabilirsiniz.
Join anahtar sözcüğü, SQL'deki ile INNER JOIN eşdeğerdir. İki koleksiyondaki öğeler arasında eşleşen anahtar değerlerine göre iki koleksiyonu birleştirir. Sorgu, eşleşen anahtar değerlerine sahip koleksiyon öğelerinin tümünü veya bir bölümünü döndürür. Örneğin, aşağıdaki kod önceki örtük birleştirme eylemini yineler.
Dim vowelNames2 = From student In students
Join vowel In vowels
On student.Last(0) Equals vowel
Select Name = student.First & " " &
student.Last, Initial = vowel
Order By Initial
Group Join koleksiyonları sql'de olduğu gibi tek bir hiyerarşik koleksiyonda birleştirir LEFT JOIN . Daha fazla bilgi için Join Yan Tümcesi ve Grup Birleştirme Yan Tümcesi başlıklarına bakın.
Verileri Gruplandırma (Gruplama)
Sorgu sonucundaki öğeleri öğelerin bir Group By veya daha fazla alanına göre gruplandırmak için bir yan tümce ekleyebilirsiniz. Örneğin, aşağıdaki kod öğrencileri sınıf yılına göre gruplandırr.
Dim studentsByYear = From student In students
Select student
Group By year = student.Year
Into Classes = Group
For Each yearGroup In studentsByYear
Console.WriteLine(vbCrLf & "Year: " & yearGroup.year)
For Each student In yearGroup.Classes
Console.WriteLine(" " & student.Last & ", " & student.First)
Next
Next
Bu kodu , Nasıl yapılır: Öğe Listesi Oluşturma bölümünde oluşturulan öğrenci listesini kullanarak çalıştırırsanız, deyiminin For Each çıktısı şöyle olur:
Yıl: Junior
Tucker, Michael
Garcia, Hugo
Garcia, Debra
Tucker, Lance
Yıl: Kıdemli
Omelchenko, Svetlana
Osada, Michiko
Fakhouri, Fadi
Feng, Hanying
Adams, Terry
Yıl: Birinci sınıf
Mortensen, Sven
Garcia, Cesar
Aşağıdaki kodda gösterilen varyasyon sınıf yıllarını ve ardından her yıl içindeki öğrencileri soyadına göre sıralar.
Dim studentsByYear2 = From student In students
Select student
Order By student.Year, student.Last
Group By year = student.Year
Into Classes = Group
hakkında Group By daha fazla bilgi için bkz. Group By Tümcesi.