私は Linq を試していますが、グループ化を理解するのに苦労しています。いくつかのチュートリアルを実行しましたが、何らかの理由でこれを理解できません。
例として、複数の Web サイト ID を持つテーブル (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
誰かが私が間違っているところを教えてもらえますか? どんな助けでも大歓迎です。