Aracılığıyla paylaş


Temel LINQ Sorgu İşlemleri (C#)

Bu konuda kısa bir giriş sunar LINQ sorgu ifadeleri ve tipik türleri, sorguda gerçekleştirdiğiniz işlemlerin bazıları.Aşağıdaki konularda ayrıntılı bilgi verilmiştir:

LINQ Sorgu İfadeleri (C# Programlama Kılavuzu)

Standart Sorgu İşleçlerine Genel Bakış

İzlenecek yol: C#'de Sorgu Yazma (LINQ)

[!NOT]

sql veya XQuery gibi bir sorgu dili ile hakkında bilginiz varsa, bu konu çoğu atlayabilirsiniz.Okuyun "from yan tümcesi" başlıklı sonraki bölümde yan tümcelerini sırası hakkında bilgi edinmek için LINQ sorgu ifadelerini.

Bir veri kaynağı elde etme

İçinde bir LINQ sorgu, ilk adımdır veri kaynağını belirtmek için.Kullanılmadan önce C# [NULL]'ta çoğu programlama dilinde olduğu gibi bir değişkenin bildirilmesi gerekir.İçinde bir LINQ , sorgu from yan tümcesi veri kaynağı tanıtmak için ilk önce gelir (customers) ve Aralık değişkeni (cust).

//queryAllCustomers is an IEnumerable<Customer> 
var queryAllCustomers = from cust in customers
                        select cust;

Yineleme değişkeni aralık değişkeni benzer bir foreach döngü dışında hiçbir gerçek yineleme bir sorgu ifadesinde oluşur.Sorgu yürütüldüğünde, aralık değişkeni birbirini izleyen her öğe, bir başvuru hizmet verecek customers.Derleyici tür çıkarımını yaptığı cust, açıkça belirtmek zorunda değildir.Ek aralık değişkeni sunulan tarafından bir let yan tümcesi.Daha fazla bilgi için bkz. let tümcesi (C# Başvurusu).

[!NOT]

Genel olmayan veri kaynakları gibi ArrayList, aralık değişkeni açıkça yazılmalıdır.Daha fazla bilgi için, bkz. Nasıl yapılır: LINQ ile ArrayList Sorgulama ve from tümcesi (C# Başvurusu).

Süzüyor

Bir Boolean ifadesi şeklinde bir filtre uygulamak için en sık kullanılan sorgu işlemi olabilir.Filtre ifadesi doğru öğeleri geri dönmek sorgu neden olur.Sonuç kullanılarak üretilen where yan tümcesi.Filtre etkin kaynak serisinden dışlamak için hangi öğeleri belirtir.Aşağıdaki örnekte, yalnızca customers Londra'daki bir adresi kullanan döndürülür.

var queryLondonCustomers = from cust in customers
                           where cust.City == "London" 
                           select cust;

Tanıdık C# mantıksal kullanabilirsiniz AND ve OR gibi birçok deyimler içinde gerektiği gibi filtre uygulamak için işleçleri where yan tümcesi.Örneğin, yalnızca müşteriler "" İstanbul"dönmek için AND adı olan"Devon"aşağıdaki kodu yazın:

where cust.City=="London" && cust.Name == "Devon"

Londra ya da Paris müşteriler geri dönmek için aşağıdaki kodu yazabilirsiniz:

where cust.City == "London" || cust.City == "Paris"

Daha fazla bilgi için bkz. where tümcesi (C# Başvurusu).

Sıralama

Genellikle döndürülen verileri sıralamak uygundur.orderby Yan tümcesi neden olur öğeleri döndürülen sırada sıralanan türü için varsayılan karşılaştırıcısı göre sıralanacak.Örneğin, aşağıdaki sorgu sonuçlarına göre sıralama Genişletilebilir Name özelliği.Çünkü Name bir dize olan varsayılan karşılaştırıcı A'dan z bir alfabetik sıralama gerçekleştirir.

var queryLondonCustomers3 = 
    from cust in customers
    where cust.City == "London" 
    orderby cust.Name ascending 
    select cust;

Z'den A'ya, ters sırada sonuçlarını sıralamak için kullanmak orderby…descending yan tümcesi.

Daha fazla bilgi için bkz. orderby tümcesi (C# Başvurusu).

Gruplama

group Yan tümcesi sonuçlarınızı, belirttiğiniz bir tuş grubu etkinleştirir.Örneğin sonuçları olarak gruplandırılmalıdır belirtebilirsiniz City İstanbul'a veya Paris tüm müşterilerden ayrı ayrı gruplar halinde olmasını sağlayın.Bu durumda, cust.City anahtarıdır.

// queryCustomersByCity is an IEnumerable<IGrouping<string, Customer>> 
  var queryCustomersByCity =
      from cust in customers
      group cust by cust.City;

  // customerGroup is an IGrouping<string, Customer> 
  foreach (var customerGroup in queryCustomersByCity)
  {
      Console.WriteLine(customerGroup.Key);
      foreach (Customer customer in customerGroup)
      {
          Console.WriteLine("    {0}", customer.Name);
      }
  }

Bir sorgu ile son ne zaman bir group yan tümcesi, sonuçlarınızı listelerden oluşan liste formu alabilir.Listedeki her öğeye sahip bir nesne olduğu bir Key üye ve bu anahtarın altında gruplandırılmış öğelerin bir listesi.Gruplar bir dizi üreten bir sorgu yineleme, bir iç içe geçmiş kullanmalısınız foreach döngü.Her grup üzerinden dış döngü yinelenir ve her grubun üyeleri üzerinde iç döngü yinelenir.

Bir grup işlemin sonuçları için başvuruda gerekir, kullanabileceğiniz into daha fazla sorgulanabilir bir tanımlayıcı oluşturmak için anahtar sözcük.Aşağıdaki sorguyu yalnızca ikiden fazla müşterileri içeren grupları döndürür:

// custQuery is an IEnumerable<IGrouping<string, Customer>> 
var custQuery =
    from cust in customers
    group cust by cust.City into custGroup
    where custGroup.Count() > 2
    orderby custGroup.Key
    select custGroup;

Daha fazla bilgi için bkz. group tümcesi (C# Başvurusu).

Katılma

Birleştirme işlemi olan sıraları arasında ilişkiler oluşturun açıkça veri kaynaklarında biçimlenen değil.Örneğin, müşteriler ve aynı konuma sahip dağıtıcıları bulmak için birleştirme gerçekleştirebilirsiniz.İçinde LINQjoin yan tümcesi her zaman çalışır veritabanı tabloları yerine nesne toplulukları karşı doğrudan.

var innerJoinQuery =
    from cust in customers
    join dist in distributors on cust.City equals dist.City
    select new { CustomerName = cust.Name, DistributorName = dist.Name };

İçinde LINQ kullanmak zorunda kalmazsınız join , çünkü sql içinde yaptığınız gibi sık yabancı anahtarları LINQ nesne modeli içinde tutan bir öğeleri koleksiyonu özellikleri olarak temsil edilir.Örneğin, bir Customer nesne topluluğu içeren Order nesneler.Birleşim gerçekleştirme yerine, siparişler noktalı gösterimi kullanarak erişebilirsiniz:

from order in Customer.Orders...

Daha fazla bilgi için bkz. join tümcesi (C# Başvurusu).

(Tahminler) seçme

select Yan tümce sorgunun sonuçları üretir ve "Şekil" veya döndürülen her öğenin türünü belirtir.Örneğin, sonuçlarınızı, tam oluşacak olup olmadığını belirtebilirsiniz Customer nesneleri, yalnızca bir üye, alt üyelerin veya bazı tamamen farklı sonuç türü temel bir hesaplama veya yeni nesne oluşturma.Zaman select yan tümce kaynak öğenin bir kopyasını başka bir şey üretir, işlem adı verilen bir projeksiyon.Tahminler, verileri dönüştürmek için güçlü bir yeteneğini kullanılır LINQ sorgu ifadelerini.Daha fazla bilgi için, bkz. LINQ ile Veri Dönüştürmeler (C#) ve select tümcesi (C# Başvurusu).

Ayrıca bkz.

Görevler

İzlenecek yol: C#'de Sorgu Yazma (LINQ)

Başvuru

Anonim Türler (C# Programlama Kılavuzu)

Kavramlar

LINQ Sorgu İfadeleri (C# Programlama Kılavuzu)

Temel Sorgu İşlemleri (Visual Basic)

Diğer Kaynaklar

C#'de LINQ'e Başlarken

Sorgu Anahtar Sözcükleri (C# Başvurusu)