【问题标题】:Lamda count total records by category and subcategoryLamda 按类别和子类别统计总记录
【发布时间】: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 的总数

【问题讨论】:

  • 至少尝试一下,我们可以帮助你
  • 对不起,我更新了我的问题

标签: c# linq entity-framework-6


【解决方案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您的回答添加一些解释,包括您所做的假设。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-23
  • 1970-01-01
相关资源
最近更新 更多