Скажем, у меня есть сводная таблица, подобная этой:
AcitivityCache
(
pkId (bigint, PK),
Date (DateTime),
OfficeId (int, FK)
TransactionCount (int),
RejectCount (int),
InvitationCount (int),
RequestCount (int)
...
--more counts here--
...
)
Теперь мне нужно получить общую сумму за период времени (без группировки по офисам, только суммы), которую я могу сделать с SQLвот так:
SELECT SUM(TransactionCount) as TotalTxCount, SUM(RejectCount) as TotalRejectCount, ...
FROM ActivityCache
WHERE [Date] between '2011-02-01' and '2012-02-01'
Как мне этого добиться с помощью linq?Большинство решений, которые я видел до сих пор, имеют некоторую группировку.Но для этого случая мне не нужна группировка, только итоги.Я могу сделать так:
DateTime dateFrom, toDate; // initialized later
...
var q = dbContext.ActivityCaches
.Where(a=> a.Date > fromDate && a.Date <= toDate)
.GroupBy(a=> 1)
.Select(g=> new
{
TotalTransactionCount = g.Sum(a => a.TransactionCount),
TotalRejectCount = g.Sum(a => a.RejectCount),
...
...
});
Или я могу сначала получить столбцы, а затем программно взять сумму.Или я могу использовать SP (не нравится в этом случае).Есть идеи получше (без группы)?
PS: я не смогу изменить схему БД