我有一个名为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; }
}
Render Entity中的一组评论,它的模型如下:
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; }
}
我需要获得所有具有任何注释的Renders的Count(),其属性为CommentApproved,等于true。
这就是我尝试过的,但是由于Select方法它没有用,我知道为什么它不起作用,但它是我能想到的唯一的东西如何编写实际编译。
private readonly RenderLibContext _db = new RenderLibContext();
....
var commented = _db.Renders.Include("Comments")
.Select(r => r.Comments.Where(c => c.CommentApproved)
.Count());
显然我的控制器中还有一些其他代码,但我想提出问题。我只是在弄清楚如何让Count()方法工作并告诉我有多少Renders具有ApprovedComment属性为真的评论。
答案 0 :(得分:2)
你走了,
var count = _db.Renders.Count(render => render.Comments.Any(c => c.CommentApproved));
答案 1 :(得分:1)
我认为这可行:
var commented = _db.Renders.Include("Comments")
.Where(c => c.CommentApproved)
.Count());
我猜这里不需要Select