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