gpt4 book ai didi

c# - 在 Entity Framework 中使用 Include 方法时如何获取特定的行数?

转载 作者:太空狗 更新时间:2023-10-30 00:50:05 26 4
gpt4 key购买 nike

我有帖子和评论表。我可以通过这个获得帖子和评论:

            List<Posts> posts = db.Posts.Include("Comments").ToList();

以上代码返回每个帖子的所有评论。我想要两件事:

  1. 每个帖子获得 5 条评论。
  2. 获取每个帖子的评论总数,而每个帖子仅获得 5 条评论。

最佳答案

假设你有一个像这样的 Post DTO/View model/POCO

public class PostDto
{
public string Title{ set; get; }
public int Id { set; get; }

public List<PostDto> Comments { set; get; }

public int TotalCommentCount { set; get; }
}

下面将获取所有帖子和最后 5 条评论以及评论数。如果需要,您可以更新 OrderByDescending 以传递另一个属性(如插入时间戳等)

 var posts = dbContext.Posts.
Select(s => new PostDto
{
Id = s.PostId,
Title= s.PostTitle,
TotalCommentCount = s.Comments.Count(),
Comments = s.Comments.OrderByDescending(f => f.Id).Take(5)
.Select(x => new PostDto
{
Id = x.CommentId,
Name = x.CommentText
}).ToList()
}).ToList();

这将只对数据库执行一个查询。阅读deferred execution and performance here了解更多信息

关于c# - 在 Entity Framework 中使用 Include 方法时如何获取特定的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34001748/

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