gpt4 book ai didi

c# - 在 linq to entities 查询中获取子项计数

转载 作者:行者123 更新时间:2023-11-30 22:24:07 24 4
gpt4 key购买 nike

我的数据库 (MySql) 中的两个表之间存在多对多关系:

  • 类别(id、名称、id_parent)
  • 声音(id,名字)

一个类别可以有 1 个父类别,因此一个类别可以有很多子类别。如果一个类别至少有一个子类别,则其中没有声音。我不允许将声音和子类别放在一起。

所以对于一个父类,我想得到所有可能有 child 的 child ,可能有 child (...),我想递归地计算所有 child 的声音。

例子:

Cat -> (CCat1 -> CCCat11(2 个声音), CCat2 (5 个声音), CCat3 -> CCat31 -> CCCat311 -> (CCCCat3111 (10 个声音), CCCCat3111 (1 个声音))

没有深度限制,这就是为什么我需要一种“递归”方式来计算声音的原因。

  • Cat 有 3 个 child 。
  • CCat1 有 1 个 child 。
  • CCat2 没有 child 。
  • CCat3 有 1 个 child 有 1 个 child 有 2 个 child 。

Cat.nbSounds = 18

最佳答案

答案在于 SelectMany 运算符的用户。

int count_soundsinparent = parentCategory
.Select(x=> x.ChildCategory)
.SelectMany(x=> x.Sounds)
.Count();

假设您会使用常规的Select;它会向您返回一个列表(每个子类别一个项目)的声音列表(子类别具有的每个声音一个项目),从而创建一个二维列表。

SelectMany 所做的是获取该列表的所有元素,并将其放入一维列表中。然后你计算该列表中的项目,瞧,你有总数。

关于c# - 在 linq to entities 查询中获取子项计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12949382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com