LINQ można zapisać na dwa różne sposoby.
Jedno jest pisanie kwerendy przy użyciu LINQ deklaratywna składnia zapytania:
var query = from x in source
where condition
select x.Property
a druga jest za pomocą LINQ Metody rozszerzenia:
var query = source.Where(condition).Select(x => x.Property);
Obie zapytań są identyczne i będzie produkować ten sam wynik (dobrze , błąd kompilatora w tym uproszczonym przykładzie, ale liczy się myśl :-))
Kompilator C# tłumaczy zapytanie na wywołania metod.
Oznacza to, że wszystko, co napiszesz jako zapytanie, można również napisać przy użyciu łańcuchów metod. Należy jednak pamiętać, że przeciwieństwem jest fałsz - niektóre zapytania mogą być pisane tylko za pomocą metod rozszerzenia Linq.
Dla dalszego czytania, here's what Microsoft have to say about it.
Note drugi rozpoczyna akapit w tym:
składnia zapytań i składnia metody są semantycznie identyczne, ale wiele osób uważa, składnia zapytań prostsze i łatwiejsze do odczytania.
btw, jeśli was'nt już jasne, że powodem jest obowiązkowe dla System.Linq
składnia łańcuchowym metoda jest również dlatego, że rozszerzenie metod LINQ należący do tej przestrzeni nazw.
To wciąż LINQ, po prostu nie jest "składnią zapytania". – Kobi
@Kobi Dziękuję! – MaxPower
Linq to tylko kilka metod, które działają na kolekcjach elementów podobnych do języka opartego na zapytaniach, takiego jak SQL. Zarówno składnia zapytania, jak i łańcuchy metod, które podałeś, są w rzeczywistości metodami linq z tej przestrzeni nazw, różnią się tylko składnią, a nie zachowaniem. – HimBromBeere