2012-01-25 34 views
5

Tôi có thể là ngu ngốc nhưng không bao giờ có vẻ để có được bất cứ điều gì hiển thị trong 'cửa sổ lambda' sau khi chạy mã. Bất cứ ai có thể giải thích làm thế nào nó có nghĩa vụ phải làm việc?Cửa sổ lambda của LinqPad là gì?

+0

đã mã của bạn bao gồm các biểu thức lambda ? – Oded

Trả lời

11

Nếu bạn viết truy vấn bằng cú pháp truy vấn, cửa sổ lambda sẽ dịch truy vấn thành cú pháp phương thức.

Thử chạy mẫu "Còn LINQ to SQL thì sao?" trong thư mục cảm ứng LINQPad 5 phút * trong tab mẫu. (Cảm ứng = LINQPad typo, không phải của tôi!)

cửa sổ mã của bạn sẽ trông như thế này:

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) 
} 

và cửa sổ lambda sẽ trông như thế này:

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

Cảm ơn. Không cần phải nói ngay sau khi tôi đăng tôi đã thử một vài mẫu và tìm thấy kết quả trong cửa sổ lambda. Tuy nhiên tôi đã không hoàn toàn nhận ra lý do tại sao cho đến khi tôi đọc lời giải thích của bạn. Nó chỉ là không may mắn rằng tất cả các ví dụ tôi đã cố gắng ban đầu được sử dụng cú pháp phương pháp. –

Các vấn đề liên quan