Lamda 按类别和子类别统计总记录
Posted
技术标签:
【中文标题】Lamda 按类别和子类别统计总记录【英文标题】:Lamda count total records by category and subcategory 【发布时间】:2018-04-06 11:15:49 【问题描述】:我有两个实体
类别
public class Category
public int Id get; set;
public int? ParentId get; set;
public string Name get; set;
public virtual ICollection<Document> Documents get; set;
文档
public class Document
public int Id get; set;
public int CategoryId get; set;
public string Name get; set;
public virtual Category Category get; set;
如何按 categoryId 获取所有子类别的总文档?
示例
类别
Id ParentId Name
1 null One
2 null Two
3 1 One Live 1
4 3 One Live 2
文件
Id CategoryId Name
1 1 Document 1
2 2 Document 5
3 3 Document 2
4 4 Document 3
我想要获得全部文档一个。我应该得到 3 的总数
【问题讨论】:
至少尝试一下,我们可以帮助你 对不起,我更新了我的问题 【参考方案1】:这应该可以工作
count = (from document in Documents
join category in Categories
on document.CategoryId equals category.Id
select document).Count();
【讨论】:
这不考虑子类别。 这个问题也没有?数据模型中的子类别在哪里? @Greg 这里有足够多的信息供您参考。 “我如何通过 categoryId 获取所有子类别的总文档?”ParentId
指的是父类别。任何带有ParentId
的类别都是该父类别的子类别(请注意,cat 4 是 cat 3 的子类别,而 cat 3 又是 cat 1 的子类别,因此有多个级别的子类别)
这只是不同的解释,我认为一个文档是Category的一个子类,因为这符合他的数据模式。无论如何,他已经获得了一些示例 Linq,它至少提供了部分答案。
子类别不是文档。它是一个类别,根据单词 subcategory 的定义。【参考方案2】:
var count= (from c in this.db.categories
join d in this.db.documents on c.id equals d.CategoryId
select d).Count();
【讨论】:
这不考虑子类别。 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。一个正确的解释would greatly improve 它的长期价值通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有其他类似问题的读者更有用。请edit您的回答添加一些解释,包括您所做的假设。以上是关于Lamda 按类别和子类别统计总记录的主要内容,如果未能解决你的问题,请参考以下文章
获取总类别树(所有类别及其子类别的列表)与根据需要获取每个分支?