Temel Sorgu İşlemleri (Visual Basic)
Bu konu, kısa bir giriş sağlar Dil ile Tümleşik Sorgu (LINQ) ifadelerin bazı işlemler gerçekleştiren bir sorgu tipik türleri ve Visual Basic.Daha ayrıntılı bilgi için aşağıdaki konulara bakın:
İzlenecek Yol: Visual Basic'de Sorgu Yazma
(Kimden) veri kaynağını belirtme
İçinde bir LINQ sorgu, ilk adımdır sorgulamak istediğiniz veri kaynağını belirtmek için.Bu nedenle, From bir sorgu yan tümcesinde her zaman gelen ilk. Sorgu işleçleri seçin ve kaynak türüne göre sonucu Şekil.
Dim query = From cust In customers
' ...
From Yan tümcesini belirtir veri kaynağı, customersve Aralık değişkeni, cust.Aralık değişkeni döngü yineleme değişkeni gibi ancak bir sorgu ifadesinde hiçbir gerçek yineleme oluşur.Ne zaman sorgu yürütüldüğünde, genellikle kullanarak bir For Each aralık değişkeni döngü, hizmet verdiği birbirini izleyen her öğe için bir başvuru kaynağı olarak customers.Derleyici tür çıkarımını yaptığı cust, açıkça belirtmek zorunda değildir.Olan ve olmayan açık yazmaya yazılan sorguları örnekleri için bkz: LINQ Sorgu İşlemlerinde Tür İlişkileri (Visual Basic).
Nasıl kullanılacağı hakkında daha fazla bilgi için From yan tümcesi Visual Basic'te bkz: From Tümcesi (Visual Basic).
Verilere filtre uygulama (yerde)
Büyük olasılıkla en yaygın sorgu işlemi bir Boolean deyim şeklinde bir filtre uyguluyor.Sorguyu daha sonra ifade doğru öğeleri döndürür.A Where yan tümcesi süzme işlemi gerçekleştirmek için kullanılır.Veri kaynağından elde edilen dizide hangi öğelerin filtresini belirtir.Aşağıdaki örnekte, Londra'daki bir adresi olan müşteriler dahil edilir.
Dim londonCusts = From cust In customers
Where cust.City = "London"
' ...
Mantıksal işleçler gibi kullanmak And ve Or filtre ifadeleri birleştirmek için bir Where yan tümcesi.Örneğin, yalnızca İstanbul ' kim ve Devon adı olan müşteriler geri dönmek için şu kodu kullanın:
Where cust.City = "London" And cust.Name = "Devon"
Londra ya da Paris müşteriler geri dönmek için şu kodu kullanın:
Where cust.City = "London" Or cust.City = "Paris"
Nasıl kullanılacağı hakkında daha fazla bilgi için Where yan tümcesi Visual Basic'te bkz: Where Tümcesi (Visual Basic).
(Sıralama) veri sıralama
Döndürülen verileri belirli bir sırayla sıralamak genellikle uygundur.Order By Yan tümcesi neden olur öğeleri belirtilen alan veya alanlar üzerinde sıralanması için döndürülen sırada.Örneğin, aşağıdaki sorgu sonuçlarını temel alan sıralar Name özelliği.Çünkü Name bir dize, döndürülen verileri A'dan Z'ye alfabetik olarak sıralanır.
Dim londonCusts1 = From cust In customers
Where cust.City = "London"
Order By cust.Name Ascending
' ...
Z'den A'ya, ters sırada sonuçlarını sıralamak için kullanmak Order By...Descending yan tümcesi.Varsayılan değer Ascending ne zaman Ascending , ne de Descending belirtilir.
Nasıl kullanılacağı hakkında daha fazla bilgi için Order By yan tümcesi Visual Basic'te bkz: Order By Tümcesi (Visual Basic).
(Seçim) verileri seçme
Select Yan tümcesi form ve döndürülen öğelerin içeriğini belirtir.Örneğin, sonuçlarınızı, tam oluşacak olup olmadığını belirtebilirsiniz Customer nesneleri, yalnızca bir Customer özelliği, bir alt kümesi özellikleri, çeşitli veri kaynakları veya bazı yeni sonuç türü özellikler birleşimini temel alan üzerinde hesaplama.Zaman Select yan tümce kaynak öğenin bir kopyasını başka bir şey üretir, işlem adı verilen bir projeksiyon.
Tam'ın oluşan bir koleksiyon almak için Customer nesneleri, aralık değişkeni seçin:
Dim londonCusts2 = From cust In customers
Where cust.City = "London"
Order By cust.Name Ascending
Select cust
Varsa bir Customer birçok alanları olan büyük bir nesne örneği olan ve almak istediğiniz tüm ad, seçebileceğiniz cust.Name, aşağıdaki örnekte gösterildiği gibi.Yerel tür çıkarımı tanıdığı bir koleksiyondan bu sonuç türünü değiştirir Customer nesnelere dizeleri koleksiyonu.
Dim londonCusts3 = From cust In customers
Where cust.City = "London"
Order By cust.Name Ascending
Select cust.Name
Veri kaynağından birden fazla alanı seçmek için iki seçeneğiniz vardır:
İçinde Select yan tümcesi, sonuç dahil etmek istediğiniz alanları belirtin.Derleyici bu alanları olarak özellikleri olan bir anonim tür tanımlayacaktır.Daha fazla bilgi için bkz. Anonim Türleri (Visual Basic).
Aşağıdaki örnekte döndürülen öğeler anonim türünde bir örnek olduğu için türe adıyla başka bir yerde kodunuzda başvuruda bulunamaz.Derleyici tarafından atanan adı türü için normal Visual Basic kodunda geçerli olmayan karakterler içeriyor.Aşağıdaki örnekte, sorgu tarafından döndürülen koleksiyondaki öðeleri londonCusts4 bir anonim tür örnekleridir
Dim 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-
Sonuç, dahil oluşturmak ve türü örneklerini başlatmak istediğiniz belirli alanlar içeren adlandırılmış bir tür tanýmlamak Select yan tümcesi.Bu seçenek yalnızca tek tek sonuçları bunlar döndürülür koleksiyonu dışında kullanmak zorunda veya bunları yöntem çağrılarında parametre olarak geçirmek zorunda kullanın.Türü londonCusts5 IEnumerable (NamePhone), aşağıdaki örnekte olduğu.
Public Class NamePhone Public Name As String Public Phone As String ' Additional class elements End Class
Dim londonCusts5 = From cust In customers Where cust.City = "London" Order By cust.Name Ascending Select New NamePhone With {.Name = cust.Name, .Phone = cust.Phone}
Nasıl kullanılacağı hakkında daha fazla bilgi için Select yan tümcesi Visual Basic'te bkz: Select Tümcesi (Visual Basic).
Katılan veri (birleştirme ve grubun birleştirme)
Birden fazla veri kaynağında birleştirebilirsiniz From çeşitli şekillerde yan tümcesi.Örneğin, aşağıdaki kod iki veri kaynaklarını kullanma ve bunların sonucunda her ikisi de özelliklerinden dolaylı olarak birleştirir.Sorgu son adları bir ünlü ile başlayan öğrenciler 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
[!NOT]
Öğrenciler de oluşturulan liste ile bu kodu çalıştırmak Nasıl yapılır: Öğe Listesi Oluşturma.
Join Anahtar sözcüğünü eşdeğer bir INNER JOIN SQL.Bu iki koleksiyonun öğeleri arasında eşleşen anahtar değerlerine dayalı iki koleksiyon birleştirir.Sorgu eşleşen anahtar değerleri olan koleksiyon öğelerin bir bölümünü veya tümünü verir.Örneğin, aşağıdaki kodu önceki örtülü birleştirme eylemini çoğaltır.
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 Jointıpkı tek bir hiyerarşik koleksiyonunu koleksiyonlara birleştiren bir LEFT JOIN SQL.Daha fazla bilgi için, bkz. Join Tümcesi (Visual Basic) ve Group Join Tümcesi (Visual Basic).
(Göre Gruplandır) verileri gruplandırma
Ekleyebileceğiniz bir Group By bir sorgu sonucu bir veya daha fazla alan öğelerinin göre öğeleri gruplamak için yan tümcesi.Örneğin, aşağıdaki kod öğrenciler sınıf yıla göre gruplandırır.
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
Öğrenciler oluşturulan listesini kullanarak bu kodu çalıştırmak, Nasıl yapılır: Öğe Listesi Oluşturma, çıktısını For Each ifadesi:
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: Freshman
Mortensen, Sven
Garcia, Cesar
Aşağıdaki kodda gösterildiği değişim sınıf yıl siparişleri ve ardından öğrenciler her yıl içinde 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
Group By hakkında daha fazla bilgi için, bkz. Group By Tümcesi (Visual Basic).
Ayrıca bkz.
Başvuru
Kavramlar
Standart Sorgu İşleçlerine Genel Bakış
Temel LINQ Sorgu İşlemleri (C#)