2012-01-25 17 views
5

Aptalca davranıyor olabilirim, ancak kod çalıştırdıktan sonra 'lambda penceresinde' hiçbir şey görünmüyor. Herkesin nasıl çalışması gerektiğini açıklayabilir mi?LinqPad'ın lambda penceresi nedir?

+0

kodunuzu mi eklediniz lambda ifadeleri ? – Oded

cevap

11

Sorgu sözdizimini kullanarak bir sorgu yazarsanız, lambda penceresi sorguyu sözdizimine çevirir.

Örnek "SQL'den LINQ nedir?" Örneğini çalıştırmayı deneyin. Örnekler sekmesindeki LINQPad 5 dakikalık indüksiyon * klasöründe. (Indüksiyon = LINQPad yazım hatası, benim değil!)

aşağıdaki gibi görünecektir Kodunuz penceresi:

from p in Products 
let spanishOrders = p.OrderDetails.Where (o => o.Order.ShipCountry == "Spain") 
where spanishOrders.Any() 
orderby p.ProductName 
select new 
{ 
    p.ProductName, 
    p.Category.CategoryName, 
    Orders = spanishOrders.Count(), 
    TotalValue = spanishOrders.Sum (o => o.UnitPrice * o.Quantity) 
} 

ve lamda pencere aşağıdaki gibi görünecektir:

Products 
    .Select (
     p => 
     new 
     { 
      p = p, 
      spanishOrders = p.OrderDetails.Where (o => (o.Order.ShipCountry == "Spain")) 
     } 
    ) 
    .Where (temp0 => temp0.spanishOrders.Any()) 
    .OrderBy (temp0 => temp0.p.ProductName) 
    .Select (
     temp0 => 
     new 
     { 
      ProductName = temp0.p.ProductName, 
      CategoryName = temp0.p.Category.CategoryName, 
      Orders = temp0.spanishOrders.Count(), 
      TotalValue = temp0.spanishOrders.Sum (o => (o.UnitPrice * (Decimal?)(o.Quantity))) 
     } 
    ) 
+0

Teşekkürler. Gönderdiğim kadarıyla söylemeye gerek yok, birkaç örnek denedim ve lambda penceresinde sonuçlar buldum. Ancak, açıklamanızı okuyana kadar neden farkında değildim. Denediğim tüm örneklerin orijinal olarak yöntem sözdizimini kullanması şanssızdı. –