任何人都可以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
表如下:
ArticleVotes:条款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
我不能完全肯定的排序依据部分,针对此事,我不知道其他的不是,因为我在测试它的位置不是。 如果它不工作,就不要怪我请:)
更新:使用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}
编辑固定使用降序排列的排序依据。
由于运给我个理由,使用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();