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.
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ı cust
bir 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.
İlgili kaynaklar
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
Öne çıkan kitap bölümleri
Bölüm 17:Visual Basic 2008 Programlamada LINQ