使用具有特定 属性 值的 ICollection 获取实体计数
Get Count on Entity with ICollection that has specific property value
我有一个名为 Renders 的模型。
public class Render
{
public int RenderId { get; set; }
public string ClientName { get; set; }
public string Title { get; set; }
public ICollection<Comment> Comments { get; set; }
}
以及该渲染实体中的评论集合,其模型如下所示:
public class Comment
{
public int CommentId { get; set; }
[Column(TypeName = "varchar(Max)"), DataType(DataType.MultilineText)]
public string UserComment { get; set; }
public bool CommentApproved { get; set; }
public int RenderId { get; set; }
public virtual Render Render { get; set; }
public virtual ICollection<CommentImage> CommentImages { get; set; }
}
我需要获取所有具有 属性 CommentApproved 等于 true 的 Any Comments 的 Renders 的 Count()。
这是我尝试过的方法,但由于 Select 方法,它不起作用,我有点明白为什么它不起作用,但这是我唯一能弄清楚的方法编写实际上可以编译的内容。
private readonly RenderLibContext _db = new RenderLibContext();
....
var commented = _db.Renders.Include("Comments")
.Select(r => r.Comments.Where(c => c.CommentApproved)
.Count());
显然我的控制器中还有一些其他代码,但我想切题。我只是无法弄清楚如何让 Count() 方法起作用,并告诉我有多少渲染器有评论,其中 ApprovedComment 属性 为真。
我认为这可能有效:
var commented = _db.Renders.Include("Comments")
.Where(c => c.CommentApproved)
.Count());
我猜Select
这里没必要
给你,
var count = _db.Renders.Count(render => render.Comments.Any(c => c.CommentApproved));
我有一个名为 Renders 的模型。
public class Render
{
public int RenderId { get; set; }
public string ClientName { get; set; }
public string Title { get; set; }
public ICollection<Comment> Comments { get; set; }
}
以及该渲染实体中的评论集合,其模型如下所示:
public class Comment
{
public int CommentId { get; set; }
[Column(TypeName = "varchar(Max)"), DataType(DataType.MultilineText)]
public string UserComment { get; set; }
public bool CommentApproved { get; set; }
public int RenderId { get; set; }
public virtual Render Render { get; set; }
public virtual ICollection<CommentImage> CommentImages { get; set; }
}
我需要获取所有具有 属性 CommentApproved 等于 true 的 Any Comments 的 Renders 的 Count()。
这是我尝试过的方法,但由于 Select 方法,它不起作用,我有点明白为什么它不起作用,但这是我唯一能弄清楚的方法编写实际上可以编译的内容。
private readonly RenderLibContext _db = new RenderLibContext();
....
var commented = _db.Renders.Include("Comments")
.Select(r => r.Comments.Where(c => c.CommentApproved)
.Count());
显然我的控制器中还有一些其他代码,但我想切题。我只是无法弄清楚如何让 Count() 方法起作用,并告诉我有多少渲染器有评论,其中 ApprovedComment 属性 为真。
我认为这可能有效:
var commented = _db.Renders.Include("Comments")
.Where(c => c.CommentApproved)
.Count());
我猜Select
这里没必要
给你,
var count = _db.Renders.Count(render => render.Comments.Any(c => c.CommentApproved));