gpt4 book ai didi

c# - 如何在不复制 LINQ 的情况下接收评论最多的帖子

转载 作者:行者123 更新时间:2023-11-30 16:44:15 25 4
gpt4 key购买 nike

我一直在尝试解决这个问题,但没有成功。我正在使用 ASP.net MVC 制作博客 Web 应用程序,并尝试根据评论数创建头条新闻。以下查询:

        var top = (from p in posts
join c in comments
on p.Id equals c.whichPost
orderby posts.Where(h=>h.Id==c.whichPost).Count()
select(p)
).Take(5);

我的观点:

    @foreach (var item in Model) {
<tr>
<td>
<a href="/Posts/Detail/@item.Id">@Html.DisplayFor(modelItem => item.Title)</a>
</td>
</tr>

实际上是在查询排名靠前的评论,但在 View 中它会根据评论数打印标题名称。我想说的是:

  • 标题 1(即有 4 条评论)
  • 标题 1
  • 标题 1
  • 标题 1
  • 标题 3(2 条评论)
  • 标题 3
  • 标题 2(一条评论)

有解决这个问题的提示吗? 谢谢。

最佳答案

使用 group join :

 var top = (from p in posts
join c in comments on p.Id equals c.whichPost into g
orderby g.Count() descending // don't forget to use descending order
select p).Take(5);

或者如果您的实体中有导航属性

 var top = posts.OrderByDescending(p => p.Comments.Count()).Take(5);

注意:您当前的代码会为每个与某个帖子匹配的评论创建一个后评论对。这就是为什么您会看到重复的原因。没有评论的帖子也存在问题。简单加入不会给你任何匹配项。

关于c# - 如何在不复制 LINQ 的情况下接收评论最多的帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43805441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com