Скажет, у меня есть сводная таблица, как это:Как выбрать совокупность нескольких столбцов (без группы)?
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: Я не смогу изменить БД Schema
Ну, T-SQL является * неявно * делает операцию группировки, это просто, что все записи в одной и той же группе, что то же самое, что вы делаете с вашим 'GroupBy (a => 1) '. Есть ли какая-то конкретная причина, по которой вам это не нравится? – AakashM
нет причин не любить :). Мне просто интересно, есть ли еще пути. – mshsayem