Non sono sicuro se questa è solo una cattiva abitudine, o un modo valido di fare le cose, ma per i grandi query di report complessi che abbracciano mazzi di tabelle, spesso ricevo le mie statistiche aggregate sommando una dichiarazione Case
.Qual è il LINQ equivalente a SUM (CASE QUANDO X = Y THEN 1 ELSE 0 END)?
Ad esempio:
SELECT Contact.Name,
SUM(CASE WHEN Order.Type = 'Special' THEN 1 ELSE 0 END) AS SpecialOrders,
SUM(CASE WHEN Order.Type = 'Magic' THEN 1 ELSE 0 END) AS MagicOrders,
FROM Contact
LEFT JOIN Order ON (Contact.ContactID = Order.ContactID)
Come dovrei farlo in LINQ to SQL? (In vb.net, ma credo che qualche esempio .Net farebbe)
Dim Orders = _
From Order In DB.Orders
Select New With {.Name = Contact.Name,
.Special = If(Order.Type = "Special", 1, 0),
.Magical = If(Order.Type = "Magical ", 1, 0)}
ho bisogno di sommare i valori .Special
e .Magical
.
(In realtà, la query occupare diverse tabelle, comprensivi di informazioni-prenotazioni eventi, e la decisione di sommare un record o no dipende campi in molti di essi)
Questo è C#, OP è alla ricerca per l'equivalente VB.Net. – JaredPar
"In vb.net, ma credo che qualsiasi esempio .Net farebbe" - questo è quello che ha detto. Ho paura di non parlare VB. –
Inoltre, questo non esegue il join della query sql dell'OP. – paqogomez