İkisi de daha iyi: farklı ihtiyaçlara hizmet ediyorlar. Birden çok aralık değişkeninden yararlanmak istediğinizde sorgu sözdizimi kendi başına gelir . Bu üç durumda olur:
- Let anahtar kelimesini kullanırken
- Eğer (birden jeneratörler olduğunda gelen maddelerinde)
- Katılırken
İşte bir örnek (LINQPad örneklerinden):
string[] fullNames = { "Anne Williams", "John Fred Smith", "Sue Green" };
var query =
from fullName in fullNames
from name in fullName.Split()
orderby fullName, name
select name + " came from " + fullName;
Şimdi bunu yöntem sözdiziminde aynı şeyle karşılaştırın:
var query = fullNames
.SelectMany (fName => fName.Split().Select (name => new { name, fName } ))
.OrderBy (x => x.fName)
.ThenBy (x => x.name)
.Select (x => x.name + " came from " + x.fName);
Öte yandan yöntem sözdizimi, sorgu işleçlerinin tam gamını ortaya çıkarır ve basit sorgularla daha özlüdür. Sorgu ve yöntem sözdizimini karıştırarak her iki dünyanın en iyisini elde edebilirsiniz. Bu genellikle LINQ to SQL sorgularında yapılır:
var query =
from c in db.Customers
let totalSpend = c.Purchases.Sum (p => p.Price) // Method syntax here
where totalSpend > 1000
from p in c.Purchases
select new { p.Description, totalSpend, c.Address.State };