Nie jestem pewien, czy jest to po prostu zły nawyk, czy poprawny sposób robienia rzeczy, ale w przypadku dużych złożonych zapytań z raportami obejmujących paczki tabel, często otrzymuję moje statystyki zbiorcze przez zsumowanie oświadczenia Case
.Co to jest LINQ równoważny SUMIE (SPRAWA KIEDY X = Y TO 1 ELSE 0 END)?
Na przykład:
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)
Jak zrobić to w LINQ do SQL? (W VB.NET, ale myślę, że każdy przykład .Net zrobi)
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)}
muszę zsumować wartości .Special
i .Magical
.
(W rzeczywistości, kwerenda obejmuje kilka tabel składających się z informacji o zdarzeniach-rezerwacji i decyzja Podsumowując rekord czy nie zależy na polach w kilku z nich)
To jest C#, OP szuka odpowiednika VB.Net. – JaredPar
"W vb.net, ale przypuszczam, że zrobiłby to przykład .Net" - tak powiedział. Obawiam się, że nie mówię VB. –
Dodatkowo nie wykonuje połączenia, które wykonuje kwerenda sql OP. – paqogomez