2009-08-17 11 views
1

誰でもLINQに次のSQLを使用できますか?LINQ to SQL結合と合計

私はこれを2時間続けていますが、私が始めたときよりもこれを得ることに近づくことはありません。

SELECT ArticleId, sum(Amount) AS VoteCount 
FROM ArticleVotes INNER JOIN 
Votes ON ArticleVotes.voteId = Votes.id 
GROUP BY ArticleVotes.articleId 
ORDER BY VoteCount DESC 

表は次のとおりです。

ArticleVotes:、ID、量

答えて

4
from articleVote in ArticleVotes 
join vote in Votes on art.voteId equals vote.id 
group articleVote by artarticleVote.articleId 
select new 
{ 
ArticleId = art.ArticleID, 
VoteCount = Votes.Sum(vote.amount) 
} 
orderby VoteCount 

私は問題のために、私はどちらかの残りの部分についてはよく分からない、orderbyの部分について完全にはよく分からない:情報でarticleID、

投票をVoteId私はそれをテストする立場にないので。 OPの作品を使用した:それは動作しない場合は、私を責めないでください

更新:)してください

from artVotes in ArticleVotes 
join vote in Votes on artVotes.VoteId equals vote.Id 
group artVotes by artVotes.ArticleId into g 
let totalAmount = g.Sum(p => p.Vote.Amount) 
orderby totalAmount descending 
select new { ArticleId = g.Key, total = totalAmount} 

を編集は降順順序付けを使用するorderbyのを修正しました。

私に、let演算子を使用して最終的にその美しさを実現する理由を与えてくれてありがとう。あなたは質問するだけで、大いに私を助けました。それに対して+1。

+0

Femaref、答えてくれてありがとうしかし、私は取得しています「)または予想される表現の終わり」articleVote.ArticleId後。 – griegs

+1

あなたはコンマを追加する必要があります: "ArticleId = art.ArticleId、VoteCount = ..."も注文を修正する必要があります。私はそれをすべて表示するために答えます。 –

+0

ええ、リードの答えはどこに行きましたか?削除されたように見えます。それでも、それはグループラインのenmdでa)を期待していた点で同じ問題を抱えていました。 – griegs

0

これは私が今持っているものですが、合計で注文が欠落しています。

from artVotes in ArticleVotes 
join vote in Votes on artVotes.VoteId equals vote.Id 
group artVotes by artVotes.ArticleId into g 
select new { ArticleId = g.Key, total = g.Sum(p => p.Vote.Amount)} 
0

次のコードを試してください。それは私のために働いていたからです。

      var credit = (from bm in BulkMessage 
          join sms in SMS on bm.BulkMessageId equals sms.BulkMessageId 
          where bm.ProfileId == pid && bm.IsActive == true 
          group sms by sms.SMSCredit into g 

          select new { SMSCredits = g.Sum(s => s.SMSCredit) }).FirstOrDefault(); 

          string totalCredit=credit.SMSCredits.ToString(); 
関連する問題