Potrei essere stupido ma non riesco mai a visualizzare nulla nella "finestra lambda" dopo l'esecuzione del codice. Qualcuno può spiegare come dovrebbe funzionare?A cosa serve la finestra lambda di LinqPad?
risposta
Se si scrive una query utilizzando la sintassi della query, la finestra lambda tradurrà la query nella sintassi del metodo.
Provare a eseguire l'esempio "Che ne dici di LINQ su SQL?" nella cartella dell'induzione * di 5 minuti LINQPad nella scheda dei campioni. (induzione = LINQPad errore di battitura, non il mio!)
finestra del codice sarà simile a questa:
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)
}
e la finestra lambda sarà simile a questa:
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)))
}
)
Grazie. Inutile dire che appena ho postato ho provato alcuni dei campioni e ho trovato risultati nella finestra lambda. Tuttavia non mi rendevo conto del perché fino a quando non ho letto la tua spiegazione. È stato sfortunato che tutti gli esempi che avevo provato usassero originariamente la sintassi del metodo. –
fatto il tuo codice comprendono le espressioni lambda ? – Oded