gpt4 book ai didi

linq - 递归 Linq 分组

转载 作者:行者123 更新时间:2023-12-02 10:52:31 26 4
gpt4 key购买 nike

场景:我有一个数据库表,它存储另一个表的多对多关系的层次结构。一项可以有多个子项,也可以有多个父项。

Items    
------
ItemID (key)

Hierarchy
---------
MemberID (key)
ParentItemID (fk)
ChildItemID (fk)

层次结构示例:

Level1  Level2  Level3
X A A1
A2
B B1
X1
Y C

我想按层次结构中的每个节点对所有节点进行分组。

Parent  Child
X A1
A2
B1
X1
A A1
A2
B B1
X1
Y C
  • 请注意 Parent 列中没有叶节点,而 Child 列如何包含叶节点。
  • 理想情况下,我希望结果采用 IEnumerable< IGrouping< 的形式Item, Item>>,其中键是 Parent,组项都是 Children。
  • 理想情况下,我想要一个实体提供者可以将其转换为 T-SQL 的解决方案,但如果这不可能,那么我需要将往返次数保持在最低限度。
  • 我打算对叶节点上连接的另一个表中存在的值求和。

最佳答案

既然您总是要返回表中的所有项目,为什么不直接创建一个递归方法来获取父级的所有子级,然后在内存中的项目上使用它:

partial class Items
{
public IEnumerable<Item> GetAllChildren()
{
//recursively or otherwise get all the children (using the Hierarchy navigation property?)
}
}

然后:

var items = 
from item in Items.ToList()
group new
{
item.itemID,
item.GetAllChildren()
} by item.itemID;

对于任何语法错误,我们深表歉意...

关于linq - 递归 Linq 分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5205777/

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