LINQ to SQL Join和Sum

任何人LINQ可以使用以下SQL吗?

我现在已经在这两个小时了,而且比我开始的时候更接近这个。

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

表格如下;

文章投票:ArticleId,VoteId

投票:id,金额

 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部分,因此,我不确定其余部分,因为我不能测试它。 如果它不起作用,请不要责怪我:)

更新:使用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。

这就是我现在所拥有的,但总共错过了订单。

 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)} 

请尝试以下代码。 因为它对我有用。

  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();