Aracılığıyla paylaş


Visual Basic'te LINQ'e Giriş

Language-Integrated Sorgusu (LINQ), Visual Basic'e sorgu özellikleri ekler ve her türlü veriyle çalışırken basit ve güçlü özellikler sağlar. LINQ, işlenecek bir veritabanına sorgu göndermek veya aradığınız her veri türü için farklı sorgu söz dizimi ile çalışmak yerine, Visual Basic dilinin bir parçası olarak sorgular ekler. Veri türünden bağımsız olarak birleşik bir söz dizimi kullanır.

LINQ, SQL Server veritabanından, XML'den, bellek içi dizilerden ve koleksiyonlardan, ADO.NET veri kümelerinden veya LINQ'yi destekleyen diğer uzak veya yerel veri kaynaklarından veri sorgulamanızı sağlar. Tüm bunları ortak Visual Basic dil öğeleriyle yapabilirsiniz. Sorgularınız Visual Basic dilinde yazıldığından, sorgu sonuçlarınız kesin yazılmış nesneler olarak döndürülür. Bu nesneler IntelliSense'i destekler ve bu sayede çalışma zamanı yerine derleme zamanında daha hızlı kod yazabilir ve sorgularınızdaki hataları yakalayabilirsiniz. LINQ sorguları, sonuçları daraltmak için ek sorguların kaynağı olarak kullanılabilir. Ayrıca, kullanıcıların sorgu sonuçlarınızı kolayca görüntüleyebilmesi ve değiştirebilmesi için denetimlere bağlanabilirler.

Örneğin, aşağıdaki kod örneğinde bir koleksiyondaki müşterilerin listesini döndüren ve konumlarına göre gruplandıran bir LINQ sorgusu gösterilmektedir.

' Obtain a list of customers.
Dim customers As List(Of Customer) = GetCustomers()

' Return customers that are grouped based on country.
Dim countries = From cust In customers
                Order By cust.Country, cust.City
                Group By CountryName = cust.Country
                Into CustomersInCountry = Group, Count()
                Order By CountryName

' Output the results.
For Each country In countries
    Debug.WriteLine(country.CountryName & " count=" & country.Count)

    For Each customer In country.CustomersInCountry
        Debug.WriteLine("   " & customer.CompanyName & "  " & customer.City)
    Next
Next

' Output:
'   Canada count=2
'      Contoso, Ltd  Halifax
'      Fabrikam, Inc.  Vancouver
'   United States count=1
'      Margie's Travel  Redmond

Örnekleri çalıştırma

Giriş ve LINQ Sorgusunun Yapısı bölümündeki örnekleri çalıştırmak için, müşteri ve sipariş listelerini döndüren aşağıdaki kodu ekleyin.

' Return a list of customers.
Private Function GetCustomers() As List(Of Customer)
    Return New List(Of Customer) From
        {
            New Customer With {.CustomerID = 1, .CompanyName = "Contoso, Ltd", .City = "Halifax", .Country = "Canada"},
            New Customer With {.CustomerID = 2, .CompanyName = "Margie's Travel", .City = "Redmond", .Country = "United States"},
            New Customer With {.CustomerID = 3, .CompanyName = "Fabrikam, Inc.", .City = "Vancouver", .Country = "Canada"}
        }
End Function

' Return a list of orders.
Private Function GetOrders() As List(Of Order)
    Return New List(Of Order) From
        {
            New Order With {.CustomerID = 1, .Amount = "200.00"},
            New Order With {.CustomerID = 3, .Amount = "600.00"},
            New Order With {.CustomerID = 1, .Amount = "300.00"},
            New Order With {.CustomerID = 2, .Amount = "100.00"},
            New Order With {.CustomerID = 3, .Amount = "800.00"}
        }
End Function

' Customer Class.
Private Class Customer
    Public Property CustomerID As Integer
    Public Property CompanyName As String
    Public Property City As String
    Public Property Country As String
End Class

' Order Class.
Private Class Order
    Public Property CustomerID As Integer
    Public Property Amount As Decimal
End Class

LINQ sağlayıcıları

LINQ sağlayıcısı Visual Basic LINQ sorgularınızı sorgulanan veri kaynağıyla eşler. LinQ sorgusu yazdığınızda sağlayıcı bu sorguyu alır ve veri kaynağının yürütebileceği komutlara çevirir. Sağlayıcı ayrıca verileri kaynaktan sorgu sonucunuzu oluşturan nesnelere dönüştürür. Son olarak, veri kaynağına güncelleştirme gönderdiğinizde nesneleri verilere dönüştürür.

Visual Basic aşağıdaki LINQ sağlayıcılarını içerir.

Sağlayıcı Açıklama
LINQ to Objects LINQ to Objects sağlayıcısı bellek içi koleksiyonları ve dizileri sorgulamanızı sağlar. Bir nesne IEnumerable veya IEnumerable<T> arabirimini destekliyorsa, LINQ to Objects sağlayıcısı bunu sorgulamanıza olanak tanır.

LINQ to Objects sağlayıcısını, tüm Visual Basic projeleri için varsayılan olarak içeri aktarılan System.Linq ad alanını içeri aktararak etkinleştirebilirsiniz.

LINQ to Objects sağlayıcısı hakkında daha fazla bilgi için bkz. LINQ to Objects.
LINQ to SQL LINQ to SQL sağlayıcısı, SQL Server veritabanındaki verileri sorgulamanıza ve değiştirmenize olanak tanır. Bu, bir uygulamanın nesne modelini veritabanındaki tablo ve nesnelerle eşlemeyi kolaylaştırır.

Visual Basic, Nesne İlişkisel Tasarımcısı'nı (O/R Tasarımcısı) ekleyerek LINQ to SQL ile çalışmayı kolaylaştırır. Bu tasarımcı, veritabanındaki nesnelere eşleyen bir uygulamada nesne modeli oluşturmak için kullanılır. O/R Tasarımcısı ayrıca, saklı yordamları ve işlevleri, veritabanıyla iletişimi yöneten ve iyimser eşzamanlılık denetimleri için durumu depolayan DataContext nesnesiyle eşleme işlevselliği sağlar.

LINQ to SQL sağlayıcısı hakkında daha fazla bilgi için bkz. LINQ to SQL. Nesne İlişkisel Tasarımcısı hakkında daha fazla bilgi için bkz. Visual Studio'da LINQ to SQL Araçları.
LINQ to XML LINQ to XML sağlayıcısı XML'yi sorgulamanıza ve değiştirmenize olanak tanır. Bellek içi XML'yi değiştirebilir veya XML'yi yükleyip bir dosyaya kaydedebilirsiniz.

Buna ek olarak, LINQ to XML sağlayıcısı XML değişmez değerlerini ve XML ekseni özelliklerini etkinleştirerek doğrudan Visual Basic kodunuzda XML yazmanızı sağlar. Daha fazla bilgi için bkz. XML.
LINQ to DataSet LINQ to DataSet sağlayıcısı, ADO.NET veri kümesindeki verileri sorgulamanızı ve güncelleştirmenizi sağlar. Veri kümenizdeki verileri sorgulama, toplama ve güncelleştirme özelliklerinizi basitleştirmek ve genişletmek için veri kümelerini kullanan uygulamalara LINQ'in gücünü ekleyebilirsiniz.

Daha fazla bilgi için bkz. LINQ to DataSet.

LINQ sorgusunun yapısı

Genellikle sorgu ifadesi olarak adlandırılan LINQ sorgusu, sorgunun veri kaynaklarını ve yineleme değişkenlerini tanımlayan sorgu yan tümcelerinin birleşiminden oluşur. Sorgu ifadesi sıralama, filtreleme, gruplandırma ve birleştirme yönergelerini veya kaynak verilere uygulanacak hesaplamaları da içerebilir. Sorgu ifadesinin söz dizimi SQL söz dizimine benzer; bu nedenle söz diziminin çoğunu tanıdık bulabilirsiniz.

Sorgu ifadesi From tümcesi ile başlar. Bu yan tümce, bir sorgunun kaynak verilerini ve kaynak verilerin her öğesine ayrı ayrı başvurmak için kullanılan değişkenleri tanımlar. Bu değişkenler , aralık değişkenleri veya yineleme değişkenleri olarak adlandırılır. İlgili From maddesi, Aggregate maddesinin isteğe bağlı olduğu From sorgular dışında bir sorguya dahil edilmelidir. From veya Aggregate yan tümcelerinde sorgunun kapsamı ve kaynağı tanımlandıktan sonra, sorguyu daraltmak için sorgu yan tümcelerinin herhangi bir kombinasyonunu ekleyebilirsiniz. Sorgu yan tümceleri hakkında ayrıntılı bilgi için bu konunun devamında yer alan Visual Basic LINQ Sorgu İşleçleri bölümüne bakın. Örneğin, aşağıdaki sorgu müşteri verilerinin kaynak koleksiyonunu değişkeni olarak customers ve adlı custbir yineleme değişkenini tanımlar.

Dim customers = GetCustomers()

Dim queryResults = From cust In customers

For Each result In queryResults
    Debug.WriteLine(result.CompanyName & "  " & result.Country)
Next

' Output:
'   Contoso, Ltd  Canada
'   Margie's Travel  United States
'   Fabrikam, Inc.  Canada

Bu örnek tek başına geçerli bir sorgudur; ancak, sonucu daraltmak için daha fazla sorgu yan tümcesi eklediğinizde sorgu çok daha güçlü hale gelir. Örneğin, sonucu bir veya daha fazla değere göre filtrelemek için bir Where yan tümce ekleyebilirsiniz. Sorgu ifadeleri tek bir kod satırıdır; Yalnızca sorgunun sonuna ek sorgu yan tümceleri ekleyebilirsiniz. Alt çizgi (_) satır devamlılığı karakterini kullanarak okunabilirliği artırmak için bir sorguyu birden çok metin satırı arasında bölebilirsiniz. Aşağıdaki kod örneği, yan tümcesi içeren Where bir sorgu örneğini gösterir.

Dim queryResults = From cust In customers
                   Where cust.Country = "Canada"

Güçlü bir diğer sorgu yan tümcesi, veri kaynağından yalnızca seçili alanları döndürmenizi sağlayan yan tümcedir Select . LINQ sorguları, kesin olarak belirlenmiş nesnelerden oluşan numaralandırılabilir koleksiyonlar döndürür. Sorgu, anonim türlerden veya adlandırılmış türlerden oluşan bir koleksiyon döndürebilir. Yan tümcesini Select kullanarak veri kaynağından yalnızca tek bir alan döndürebilirsiniz. Bu işlemi yaptığınızda, döndürülen koleksiyonun türü, söz konusu tek alanın türü olacaktır. Veri kaynağından Select birden çok alan döndürmek için yan tümcesini de kullanabilirsiniz. Bunu yaptığınızda, döndürülen koleksiyonun türü yeni bir anonim türdür. Sorgu tarafından döndürülen alanları belirtilen adlandırılmış türdeki alanlarla da eşleştirebilirsiniz. Aşağıdaki kod örneği, veri kaynağındaki seçilen alanlardan alınan verilerle üyeleri doldurulmuş anonim türlerin koleksiyonunu döndüren bir sorgu ifadesini göstermektedir.

Dim queryResults = From cust In customers
               Where cust.Country = "Canada"
               Select cust.CompanyName, cust.Country

LINQ sorguları, birden çok veri kaynağını birleştirmek ve tek bir sonuç döndürmek için de kullanılabilir. Bu, bir veya daha fazla From yan tümce ile veya Join ya da Group Join yan tümce kullanılarak yapılabilir. Aşağıdaki kod örneğinde müşteri ve sipariş verilerini birleştiren ve müşteri ile sipariş verilerini içeren anonim türlerden oluşan bir koleksiyon döndüren bir sorgu ifadesi gösterilmektedir.

Dim customers = GetCustomers()
Dim orders = GetOrders()

Dim queryResults = From cust In customers, ord In orders
           Where cust.CustomerID = ord.CustomerID
           Select cust, ord

For Each result In queryResults
    Debug.WriteLine(result.ord.Amount & "  " & result.ord.CustomerID & "  " & result.cust.CompanyName)
Next

' Output:
'   200.00  1  Contoso, Ltd
'   300.00  1  Contoso, Ltd
'   100.00  2  Margie's Travel
'   600.00  3  Fabrikam, Inc.
'   800.00  3  Fabrikam, Inc.

Yan tümcesini Group Join kullanarak müşteri nesnelerinin bir koleksiyonunu içeren hiyerarşik bir sorgu sonucu oluşturabilirsiniz. Her müşteri nesnesinin, bu müşteriye ait tüm siparişlerin koleksiyonunu içeren bir özelliği vardır. Aşağıdaki kod örneği, müşteri ve sipariş verilerini hiyerarşik bir sonuç olarak birleştiren ve anonim türlerden oluşan bir koleksiyon döndüren bir sorgu ifadesini gösterir. Sorgu, müşteri için sipariş verilerini içeren bir koleksiyona sahip olan CustomerOrders özelliği içeren bir tür döndürür. Ayrıca, bu müşterinin tüm siparişlerinin toplamlarının toplamını içeren bir OrderTotal özellik içerir. (Bu sorgu, LEFT OUTER JOIN ile eşdeğerdir.)

Dim customers = GetCustomers()
Dim orders = GetOrders()

Dim queryResults = From cust In customers
                   Group Join ord In orders On
                     cust.CustomerID Equals ord.CustomerID
                     Into CustomerOrders = Group,
                          OrderTotal = Sum(ord.Amount)
                   Select cust.CompanyName, cust.CustomerID,
                          CustomerOrders, OrderTotal

For Each result In queryResults
    Debug.WriteLine(result.OrderTotal & "  " & result.CustomerID & "  " & result.CompanyName)
    For Each ordResult In result.CustomerOrders
        Debug.WriteLine("   " & ordResult.Amount)
    Next
Next

' Output:
'   500.00  1  Contoso, Ltd
'      200.00
'      300.00
'   100.00  2  Margie's Travel
'      100.00
'   1400.00  3  Fabrikam, Inc.
'      600.00
'      800.00

Güçlü sorgu ifadeleri oluşturmak için kullanabileceğiniz birkaç ek LINQ sorgu işleci vardır. Bu konunun sonraki bölümünde, bir sorgu ifadesine ekleyebileceğiniz çeşitli sorgu yan tümceleri ele alınmaktadır. Visual Basic sorgu yan tümceleri hakkında ayrıntılı bilgi için bkz. Sorgular.

Visual Basic LINQ sorgu işleçleri

Ad alanı içindeki System.Linq sınıflar ve LINQ sorgularını destekleyen diğer ad alanları, uygulamanızın gereksinimlerine göre sorgu oluşturmak ve daraltmak için çağırabileceğiniz yöntemleri içerir. Visual Basic, aşağıdaki yaygın sorgu yan tümceleri için anahtar sözcükler içerir. Visual Basic sorgu yan tümceleri hakkında ayrıntılı bilgi için bkz. Sorgular.

From cümlesi

Sorguyu başlatmak için ya From yan tümce ya da Aggregate yan tümce gerekir. Yan From tümcesi, sorgu için kaynak koleksiyonu ve yineleme değişkenlerini belirtir. Örneğin:

' Returns the company name for all customers for which
' the Country is equal to "Canada".
Dim names = From cust In customers
            Where cust.Country = "Canada"
            Select cust.CompanyName

Seçenek cümlesi

Opsiyonel. İfadeSelect sorgu için bir dizi yineleme değişkeni bildirir. Örneğin:

' Returns the company name and ID value for each
' customer as a collection of a new anonymous type.
Dim customerList = From cust In customers
                   Select cust.CompanyName, cust.CustomerID

Bir Select yan tümcesi belirtilmemişse, sorgunun yineleme değişkenleri From veya Aggregate yan tümcesi tarafından belirtilen yineleme değişkenlerinden oluşur.

Where yan tümcesi

Opsiyonel. YanWhere tümcesi, sorgu için bir filtreleme koşulu belirtir. Örneğin:

' Returns all product names for which the Category of
' the product is "Beverages".
Dim names = From product In products
            Where product.Category = "Beverages"
            Select product.Name

Order By ifadesi

Opsiyonel. Order By İfadesi, sorgudaki sütunların sıralama düzenini belirtir. Örneğin:

' Returns a list of books sorted by price in 
' ascending order.
Dim titlesAscendingPrice = From b In books
                           Order By b.price

Join yan tümcesi

Opsiyonel. YanJoin tümcesi, iki koleksiyonu tek bir koleksiyonda birleştirir. Örneğin:

' Returns a combined collection of all of the 
' processes currently running and a descriptive
' name for the process taken from a list of 
' descriptive names.
Dim processes = From proc In Process.GetProcesses
                Join desc In processDescriptions
                  On proc.ProcessName Equals desc.ProcessName
                Select proc.ProcessName, proc.Id, desc.Description

Group By ifadesi

Opsiyonel. YanGroup By tümcesi, sorgu sonucunun öğelerini gruplandırır. Her gruba toplama işlevleri uygulamak için kullanılabilir. Örneğin:

' Returns a list of orders grouped by the order date
' and sorted in ascending order by the order date.
Dim orderList = From order In orders
                Order By order.OrderDate
                Group By OrderDate = order.OrderDate
                Into OrdersByDate = Group

Group Join yan tümcesi

Opsiyonel. Group Join Tümce, iki koleksiyonu tek bir hiyerarşik koleksiyona birleştirir. Örneğin:

' Returns a combined collection of customers and
' customer orders.
Dim customerList = From cust In customers
                   Group Join ord In orders On
                     cust.CustomerID Equals ord.CustomerID
                   Into CustomerOrders = Group,
                        TotalOfOrders = Sum(ord.Amount)
                   Select cust.CompanyName, cust.CustomerID,
                          CustomerOrders, TotalOfOrders

Toplama ifadesi

Sorguyu başlatmak için bir Aggregate tümce veya bir From tümce gerekir. Bir Aggregate tümcesi bir koleksiyona bir veya daha fazla toplama fonksiyonu uygular. Örneğin, aşağıdaki örnekte olduğu Aggregate gibi sorgu tarafından döndürülen tüm öğelerin toplamını hesaplamak için yan tümcesini kullanabilirsiniz.

' Returns the sum of all order amounts.
Dim orderTotal = Aggregate order In orders
                 Into Sum(order.Amount)

Sorguyu değiştirmek için yan tümcesini Aggregate de kullanabilirsiniz. Örneğin, ilgili sorgu koleksiyonunda hesaplama yapmak için yan tümcesini Aggregate kullanabilirsiniz. Örneğin:

' Returns the customer company name and largest 
' order amount for each customer.
Dim customerMax = From cust In customers
                  Aggregate order In cust.Orders
                  Into MaxOrder = Max(order.Amount)
                  Select cust.CompanyName, MaxOrder

let ifadesi

Opsiyonel. Bir Let ifade bir değeri hesaplar ve sorgudaki yeni bir değişkene atar. Örneğin:

' Returns a list of products with a calculation of
' a ten percent discount.
Dim discountedProducts = From prod In products
                         Let Discount = prod.UnitPrice * 0.1
                         Where Discount >= 50
                         Select prod.Name, prod.UnitPrice, Discount

Belirgin cümle

Opsiyonel. Yan Distinct tümcesi, sorgu sonuçlarında yinelenen değerleri ortadan kaldırmak için geçerli yineleme değişkeninin değerlerini kısıtlar. Örneğin:

' Returns a list of cities with no duplicate entries.
Dim cities = From item In customers
             Select item.City
             Distinct

Skip yan tümcesi

Opsiyonel. BirSkip tümce bir koleksiyondaki belirtilen sayıda öğeyi atlar ve kalan öğeleri döndürür. Örneğin:

' Returns a list of customers. The first 10 customers
' are ignored and the remaining customers are
' returned.
Dim customerList = From cust In customers
                   Skip 10

Skip While yan tümcesi

Opsiyonel. Skip While Koşulu, belirtilen bir şart true olduğu sürece koleksiyondaki öğeleri geçer ve kalan öğeleri döndürür. Örneğin:

' Returns a list of customers. The query ignores all
' customers until the first customer for whom
' IsSubscriber returns false. That customer and all
' remaining customers are returned.
Dim customerList = From cust In customers
                   Skip While IsSubscriber(cust)

Take maddesi

Opsiyonel. Take ifade, koleksiyondaki başlangıçtan itibaren belirtilen sayıda ardışık öğe döndürür. Örneğin:

' Returns the first 10 customers.
Dim customerList = From cust In customers
                   Take 10

Take While yan tümcesi

Opsiyonel. Take While Yan tümcesi, belirtilen koşul sağlandığı true sürece koleksiyondaki öğeleri içerir ve diğer öğeleri hariç tutar. Örneğin:

' Returns a list of customers. The query returns
' customers until the first customer for whom 
' HasOrders returns false. That customer and all 
' remaining customers are ignored.
Dim customersWithOrders = From cust In customers
                          Order By cust.Orders.Count Descending
                          Take While HasOrders(cust)

Ek LINQ sorgu özelliklerini kullanma

LINQ tarafından sağlanan numaralandırılabilir ve sorgulanabilir türlerin üyelerini çağırarak ek LINQ sorgu özelliklerini kullanabilirsiniz. Bu ek özellikleri, bir sorgu ifadesinin sonucunda belirli bir sorgu işlecini çağırarak kullanabilirsiniz. Örneğin, aşağıdaki örnek iki sorgunun Enumerable.Union sonuçlarını tek bir sorgu sonucunda birleştirmek için yöntemini kullanır. Sorgu sonucunu genel bir liste olarak döndürmek için yöntemini kullanır Enumerable.ToList .

Public Function GetAllCustomers() As List(Of Customer)
    Dim customers1 = From cust In domesticCustomers
    Dim customers2 = From cust In internationalCustomers

    Dim customerList = customers1.Union(customers2)

    Return customerList.ToList()
End Function

Ek LINQ özellikleri hakkında ayrıntılı bilgi için bkz. Standart Sorgu İşleçlerine Genel Bakış.

LINQ to SQL kullanarak veritabanına bağlanma

Visual Basic'te, LINQ to SQL dosyası kullanarak erişmek istediğiniz tablolar, görünümler ve saklı yordamlar gibi SQL Server veritabanı nesnelerini tanımlarsınız. LINQ to SQL dosyasının uzantısı .dbml'dir.

SQL Server veritabanına geçerli bir bağlantınız olduğunda, projenize SQL Sınıflarına LINQ öğesi şablonu ekleyebilirsiniz. Nesne İlişkisel Tasarımcısı (O/R tasarımcısı) görüntülenir. O/R Tasarımcısı, kodunuzda erişmek istediğiniz öğeleri Sunucu Gezgini/ tasarımcı yüzeyine sürüklemenizi sağlar. LINQ to SQL dosyası projenize bir DataContext nesne ekler. Bu nesne, erişmek istediğiniz tablo ve görünümlerin özelliklerini ve koleksiyonlarını ve çağırmak istediğiniz saklı yordamların yöntemlerini içerir. LINQ to SQL (.dbml) dosyasında yaptığınız değişiklikleri kaydettikten sonra, O/R Tasarımcısı tarafından tanımlanan nesneye DataContext başvurarak kodunuzdaki bu nesnelere erişebilirsiniz. DataContext Projenizin nesnesi, LINQ to SQL dosyanızın adına göre adlandırılır. Örneğin, Northwind.dbml adlı LINQ to SQL dosyası, DataContext adlı bir NorthwindDataContext nesne oluşturur.

Adım adım yönergeler içeren örnekler için bkz . Nasıl yapılır: Veritabanını Sorgulama ve Nasıl Yapılır: Saklı Yordam Çağırma.

LINQ'i destekleyen Visual Basic özellikleri

Visual Basic, LINQ kullanımını basit hale getiren ve LINQ sorguları gerçekleştirmek için yazmanız gereken kod miktarını azaltan diğer önemli özellikleri içerir. Bunlar şunları içerir:

  • Anonim türler, sorgu sonucunu temel alan yeni bir tür oluşturmanıza olanak tanır.

  • Örtük olarak yazılan değişkenler, bir tür belirtmeyi ertelemenizi ve derleyicinin sorgu sonucuna göre türü çıkarmasını sağlar.

  • Var olan bir türü, türün kendisini değiştirmeden kendi yöntemlerinizle genişletmenizi sağlayan uzantı yöntemleri.

Ayrıntılar için bkz. LINQ'i Destekleyen Visual Basic Özellikleri.

Ertelenmiş ve anında sorgu yürütme işlemi

Sorgu yürütme, sorgu oluşturmaktan ayrıdır. Sorgu oluşturulduktan sonra, yürütülmesi ayrı bir mekanizma tarafından tetiklenir. Sorgu tanımlandığı anda yürütülebilir (anında yürütme) veya tanım depolanabilir ve sorgu daha sonra yürütülebilir (ertelenmiş yürütme).

Varsayılan olarak, bir sorgu oluşturduğunuzda sorgunun kendisi hemen yürütülmüyor. Bunun yerine, sorgu tanımı sorgu sonucuna başvurmak için kullanılan değişkende depolanır. Sorgu sonuç değişkenine daha sonra kodda erişildiğinde (örneğin bir For…Next döngüde) sorgu yürütülür. Bu işlem ertelenmiş yürütme olarak adlandırılır.

Sorgular tanımlandığında da yürütülebilir ve bu da anında yürütme olarak adlandırılır. Sorgu sonucunun tek tek öğelerine erişim gerektiren bir yöntem uygulayarak anında yürütmeyi tetikleyebilirsiniz. Bu, Count, Sum, Average, Min veya Max gibi bir toplama işlevi eklemenin sonucu olabilir. Toplama işlevleri hakkında daha fazla bilgi için bkz. Toplama Yan Tümcesi.

ToList veya ToArray yöntemlerinin kullanılması da anında yürütmeyi zorlar. Bu, sorguyu hemen yürütmek ve sonuçları önbelleğe almak istediğinizde yararlı olabilir. Bu yöntemler hakkında daha fazla bilgi için bkz. Veri Türlerini Dönüştürme.

Sorgu yürütme hakkında daha fazla bilgi için bkz. İlk LINQ Sorgunuzu Yazma.

Visual Basic'te XML

Visual Basic'teki XML özellikleri XML değişmez değerlerini ve XML ekseni özelliklerini içerir. Bu özellikler, kodunuzda KOLAYCA XML oluşturmanıza, erişmenize, sorgulamanıza ve değiştirmenize olanak tanır. XML sabitleri, doğrudan kodunuzda XML yazmanızı sağlar. Visual Basic derleyicisi XML'yi birinci sınıf veri nesnesi olarak ele alır.

Aşağıdaki kod örneğinde XML öğesi oluşturma, alt öğelerine ve özniteliklerine erişme ve LINQ kullanarak öğenin içeriğini sorgulama gösterilmektedir.

' Place Imports statements at the top of your program.
Imports <xmlns:ns="http://SomeNamespace">

Module Sample1

    Sub SampleTransform()

        ' Create test by using a global XML namespace prefix.

        Dim contact =
            <ns:contact>
                <ns:name>Patrick Hines</ns:name>
                <ns:phone ns:type="home">206-555-0144</ns:phone>
                <ns:phone ns:type="work">425-555-0145</ns:phone>
            </ns:contact>

        Dim phoneTypes =
          <phoneTypes>
              <%= From phone In contact.<ns:phone>
                  Select <type><%= phone.@ns:type %></type>
              %>
          </phoneTypes>

        Console.WriteLine(phoneTypes)
    End Sub

End Module

Daha fazla bilgi için bkz. XML.

Konu Açıklama
XML Visual Basic'te sorgulanabilen ve Xml'i Visual Basic kodunuzda birinci sınıf veri nesneleri olarak eklemenize olanak tanıyan XML özelliklerini açıklar.
Arama Sorguları Visual Basic'te kullanılabilen sorgu yan tümceleri hakkında başvuru bilgileri sağlar.
LINQ (DilLe Tümleşik Sorgu) LINQ için genel bilgileri, programlama kılavuzlarını ve örnekleri içerir.
LINQ to SQL LINQ to SQL için genel bilgileri, programlama kılavuzlarını ve örnekleri içerir.
LINQ to Objects LINQ to Objects için genel bilgileri, programlama kılavuzlarını ve örnekleri içerir.
LINQ to ADO.NET (Portal Sayfası) LINQ to ADO.NET için genel bilgilere, programlama kılavuzuna ve örneklere bağlantılar içerir.
LINQ to XML LINQ to XML için genel bilgileri, programlama kılavuzlarını ve örnekleri içerir.

Nasıl yapılır ve rehber başlıkları

Nasıl yapılır: Veritabanını Sorgulama

Nasıl yapılır: Saklı Yordam Çağırma

Nasıl yapılır: Veritabanındaki Verileri Değiştirme

Nasıl yapılır: Verileri Bağlantılarla Birleştirme

Nasıl yapılır: Sorgu Sonuçlarını Sıralama

Nasıl yapılır: Sorgu Sonuçlarını Filtreleme

Nasıl yapılır: Verileri Sayma, Toplama veya Ortalama

Nasıl yapılır: Sorgu Sonucunda En Küçük veya En Büyük Değeri Bulma

Nasıl Yapılır: Güncelleştirme, ekleme ve silme gerçekleştirmek için saklı yordamları atama (O/R Tasarımcısı)

Bölüm 17:Visual Basic 2008 Programlamada LINQ

Ayrıca bakınız