2017-09-06 57 views
8

Bu kod parçacığı LINQ (Dil Entegre Sorgu) numaralı telefonu aramak doğru mu? System.Linq bu kodu için zorunludur çünküBir yöntem zinciri LINQ olarak adlandırılabilir mi?

var lstMyStrings = new List<string>(); 
lstMyStrings.Where(aX => string.IsNullOrEmpty(aX)) 
      .Skip(3) 
      .ToList(); 

Ben karıştı.
Ancak, soruları ve yanıtları bu şekilde gördüğümde: .NET LINQ query syntax vs method chain , sonra LINQ değil, bir yöntem zinciri hakkında açık konuşuyorlar.

+2

Yine de LINQ, "sorgu sözdizimi" değil. – Kobi

+0

@Kobi Teşekkürler! – MaxPower

+4

Linq, SQL gibi sorgu tabanlı bir dile benzer öğelerin koleksiyonlarında çalışan bir grup yöntemdir. Her ikisi de, sorgulama sözdizimi ve sağladığınız yöntem zincirleri aslında bu ad alanından linq-yöntemleridir, yalnızca davranışta değil sözdiziminde farklılık gösterirler. – HimBromBeere

cevap

11

LINQ iki farklı şekilde yazılabilir. kuyu (

var query = source.Where(condition).Select(x => x.Property); 

Her iki sorgular özdeş olan ve aynı sonucu üretecektir:

var query = from x in source 
      where condition 
      select x.Property 

Ve diğer LINQ uzantısı yöntemleri kullanmaktır:
Bir LINQ deklaratif sorgu sözdizimi kullanarak bir sorgu yazarak Bu fazlaca basitleştirilmiş örnekte derleyici hatası, ancak bu sayılır :-))

C# derleyicisi, sorguyu yöntem çağrılarına çevirir.
Bu, sorgu olarak yazdığınız her şeyin, yöntem zincirleri kullanılarak da yazılabileceği anlamına gelir. Ancak, bunun tersinin yanlış olduğunu unutmayın - Bazı sorgular sadece Linq'in uzantı yöntemleri kullanılarak yazılabilir. Bununla Daha fazlasını okumak için

, here's what Microsoft have to say about it.

Not ikinci paragraf başlar:

Sorgu sözdizimi ve yöntem sözdizimi anlamsal olarak aynıdır, ancak birçok kişi sorgu sözdizimi basit ve kolay okunur bulabilirsiniz. Zaten açık was'nt eğer linq uzantısı yöntemleri bu ad alanına ait olduğu yöntem zincirleme sözdizimi de için

btw, System.Linq nedeni zorunludur.

İlgili konular