Linq SelectMany 查询不工作
Linq SelectMany query not working
我有以下数据库表,其中主题和评论之间的关系是 1:N
Category
id
name
Topic
id
title
category_id
Comment
id
details
topic_id
deleted (boolean)
我想要一个查询来计算每个类别中的评论总数。我有以下 LINQ 查询但它不起作用:
@foreach (var cat in Model.AllPermissionSets.Keys)
{
var commentCount = cat.Topics.Where(c => c.Comments.deleted != 0).SelectMany(x => x.Comments).Count();
@* some other stuff *@
}
在 Visual studio 中出现错误 IList<Comment> doesn not contain a definition for deleted...
执行上述操作的正确语法是什么?
Comments
是每个 Topic
实例上的集合类型 属性。此合集没有 deleted
属性。但是集合中的每个项目(Comment
的单个实例)都有它。
var commentCount = cat.Topics.Where(c => c.Comments.Any(s=>!s.deleted))
.SelectMany(x => x.Comments).Count();
这将为您提供该类别所有帖子中未删除评论的计数。
第一部分,cat.Topics.Where(c => c.Comments.Any(s=>!s.deleted))
将为您提供 Topic
集合的筛选列表,其中至少有一个未删除的评论。在第二部分中,您要选择所有这些帖子的 Comments
并进行计数。
从下面 Ivan Stoev 的评论 复制而来。
下面的查询也会产生相同的结果,但更干净。
var commentCount =cat.Topics.SelectMany(t => t.Comments.Where(c => !c.Deleted)).Count();
我有以下数据库表,其中主题和评论之间的关系是 1:N
Category
id
name
Topic
id
title
category_id
Comment
id
details
topic_id
deleted (boolean)
我想要一个查询来计算每个类别中的评论总数。我有以下 LINQ 查询但它不起作用:
@foreach (var cat in Model.AllPermissionSets.Keys)
{
var commentCount = cat.Topics.Where(c => c.Comments.deleted != 0).SelectMany(x => x.Comments).Count();
@* some other stuff *@
}
在 Visual studio 中出现错误 IList<Comment> doesn not contain a definition for deleted...
执行上述操作的正确语法是什么?
Comments
是每个 Topic
实例上的集合类型 属性。此合集没有 deleted
属性。但是集合中的每个项目(Comment
的单个实例)都有它。
var commentCount = cat.Topics.Where(c => c.Comments.Any(s=>!s.deleted))
.SelectMany(x => x.Comments).Count();
这将为您提供该类别所有帖子中未删除评论的计数。
第一部分,cat.Topics.Where(c => c.Comments.Any(s=>!s.deleted))
将为您提供 Topic
集合的筛选列表,其中至少有一个未删除的评论。在第二部分中,您要选择所有这些帖子的 Comments
并进行计数。
从下面 Ivan Stoev 的评论 复制而来。
下面的查询也会产生相同的结果,但更干净。
var commentCount =cat.Topics.SelectMany(t => t.Comments.Where(c => !c.Deleted)).Count();