Я экспериментирую с Linq и у меня возникают проблемы с определением группировки. Я прошел несколько уроков, но по какой-то причине не могу понять это.
В качестве примера, скажем, у меня есть таблица (SiteStats) с несколькими идентификаторами веб-сайтов, в которой хранится подсчет количества посетителей по типам, которые обращались к каждому сайту в целом и за последние 30 дней.
╔════════╦═════════════╦════════╦══════╗
║ SiteId ║ VisitorType ║ Last30 ║ Total║
╠════════╬═════════════╬════════╬══════╣
║ 1 ║ 1 ║ 10 ║ 100 ║
║ 1 ║ 2 ║ 40 ║ 140 ║
║ 2 ║ 1 ║ 20 ║ 180 ║
╚════════╩═════════════╩════════╩══════╝
В SQL я легко могу получить счет для SiteID 1 с помощью следующего:
SELECT SiteId,
SUM(Last30) AS Last30Sum
FROM Sites
WHERE SiteId = 1
GROUP BY SiteId
и должен получить строку, как ...
╔════════╦════════════╗
║ SiteId ║ Last30Total║
╠════════╬════════════╣
║ 1 ║ 50 ║
╚════════╩════════════╝
Однако я не уверен, как получить этот результат, используя Linq. Я пробовал:
var statsRecord = from ss in db.SiteStats
where ss.SiteId == siteId
group ss by ss.SiteId into ss
select ss;
но я не могу получить общее с чем-то вроде statsRecord.Last30
Может кто-нибудь, пожалуйста, дайте мне знать, где я иду не так? Любая помощь приветствуется.