gpt4 book ai didi

c# - Linq to Sql 选择具有嵌套数的项目

转载 作者:太空宇宙 更新时间:2023-11-03 11:06:01 26 4
gpt4 key购买 nike

我有以下表结构:

enter image description here

使用 Linq To SQL 我想得到这样的列表:

new {
E = e, // the E object
Ds = e.Ds, // list of D objects referenced by E
NumAs = ??? // COUNT OF A objects that are eventually associated with this E
}

但是,我希望这些东西按与每个 E 关联的 A 的数量排序。

我一直在尝试结合使用 joins/orderby 和嵌套查询,但我不确定如何获得它。

如果我从表 E 到 A 进行引用,那么这似乎微不足道; IE。这个:

enter image description here

from e in ctx.E
orderby e.As.Count()
select new {
E = e,
Ds = e.Ds,
numAs = e.As.Count()
}

但引用是否违反了某种数据库规范化规则?

最佳答案

你可以这样做

from e in ctx.E
let ds = e.Ds
let cs = ds.SelectMany(d => d.Cs)
let as = cs.SelectMany(c => c.As)
orderby as.Count()
select new {
E = e,
Ds = e.Ds,
numAs = as.Count()
}

或者这个,为了简洁

from e in ctx.E
let as = e.Ds.SelectMany(d => d.Cs).SelectMany(c => c.As)
orderby as.Count()
select new {
E = e,
Ds = e.Ds,
numAs = as.Count()
}

另一种方法可能是从 A 开始并将它们分组,如下所示:

from a in ctx.A
group a by a.C.D.E into g
orderby g.Count()
select new {
E = g.Key,
Ds = g.Key.Ds,
numAs = g.Count()
}

关于c# - Linq to Sql 选择具有嵌套数的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15814579/

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