C# Lamda按类别和子类别统计总记录

C# Lamda按类别和子类别统计总记录,c#,linq,entity-framework-6,C#,Linq,Entity Framework 6,我有两个实体 类别 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;} } 如何按类别和所有子类别获取总文档 示例 类别 Id ParentId Name 1 nul

我有两个实体

类别

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;}
}
如何按类别和所有子类别获取总文档

示例

类别

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点前得到总数这应该行得通

count = (from document in Documents
         join category in Categories 
         on document.CategoryId equals category.Id
         select document).Count();
var count=(来自this.db.categories中的c
在c.id上的this.db.documents中加入d等于d.CategoryId
选择d).Count();

至少尝试一下,然后我们可以帮助您抱歉,我更新了我的问题。这没有考虑子类别。感谢您提供此代码片段,它可能会提供一些有限的即时帮助。通过说明为什么这是一个很好的问题解决方案来正确解释它的长期价值,并将使它对未来有其他类似问题的读者更有用。请在你的回答中添加一些解释,包括你所做的假设。这不考虑子类别。问题也不考虑?数据模型中的子类别在哪里@Greg这里有足够的信息供您从这里开始。“如何按类别ID获取所有子类别的总文档?”
ParentId
指的是父类别。任何带有
ParentId
的类别都是该父类别的子类别(注意,第4类是第3类的子类别,而第3类又是第1类的子类别,因此有多个级别的子类别)。这只是不同的解释,我认为文档是类别的子类别,因为这与他的数据模式一致。无论如何,他已经得到了一些Linq样本,它至少提供了部分答案。子类别不是文档。它是一个范畴,根据单词子范畴的定义。
count = (from document in Documents
         join category in Categories 
         on document.CategoryId equals category.Id
         select document).Count();