Aracılığıyla paylaş


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:

Visual Basic'de LINQ'e Giriş

Sorgular (Visual Basic)

İ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

IEnumerable

Kavramlar

Standart Sorgu İşleçlerine Genel Bakış

Temel LINQ Sorgu İşlemleri (C#)

Diğer Kaynaklar

Visual Basic'te LINQ'e Başlarken

Sorgular (Visual Basic)

Visual Basic'de LINQ