Для чего нужно лямбда-окно LinqPad? - PullRequest
7 голосов
/ 25 января 2012

Я могу быть глупым, но мне кажется, что после запуска кода я ничего не вижу в «лямбда-окне». Кто-нибудь может объяснить, как это должно работать?

1 Ответ

13 голосов
/ 25 января 2012

Если вы напишите запрос с использованием синтаксиса запроса, лямбда-окно переведет запрос в синтаксис метода.

Попробуйте запустить пример "Как насчет LINQ to SQL?" в папке LINQPad 5 минут индукции * на вкладке примеров. (индукция = опечатка LINQPad, а не моя!)

Ваше окно кода будет выглядеть так:

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

и лямбда-окно будет выглядеть так:

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