gpt4 book ai didi

C# Linq 等效于 SQL Count()

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:19 24 4
gpt4 key购买 nike

我有一个与我的数据库一起使用的相当复杂的连接查询。运行它后,我最终得到包含 baseID 和许多其他字段的结果。然后我想获取此 baseID 并确定它在这样的表中出现了多少次:

TableToBeCounted (Many to Many)
{
baseID,
childID
}

如何执行仍然使用我已有的查询的 linq 查询,然后将 count() 与 baseID 连接起来?

在未经测试的 linq 代码中是这样的:

from k in db.Kingdom
join p in db.Phylum on k.KingdomID equals p.KingdomID
where p.PhylumID == "Something"
join c in db.Class on p.PhylumID equals c.PhylumID
select new {c.ClassID, c.Name};

然后我想使用该代码并计算每个类中嵌套了多少订单。然后我想使用 linq 附加一列,以便我的最终选择看起来像这样:

select new {c.ClassID, c.Name, o.Count()}//Or something like that.

整个示例基于 Biological Classification系统。

更新:

假设我有多个表的例子:

Kingdom
|--Phylum
|--Class
|--Order

每个门都有一个门 ID 和一个王国 ID。这意味着所有门都是一个王国的子集。所有订单都是类 ID 的子集。我想计算每个类(class)下面有多少订单。

我希望现在一切都清楚了。

最佳答案

通常这是在一个小组中完成的。例如:

from k in db.Kingdom
join p in db.Phylum on k.KingdomID equals p.KingdomID
where p.PhylumID == "Something"
join c in db.Class on p.PhylumID equals c.PhylumID
group c by new { c.ClassID, c.Name } into g
select new { Count = g.Count(), g.Key.ClassID, g.Key.Name };

这基本上会计算每个 ClassID/Name 对的条目数。但是,正如温斯顿在评论中所说,您可能对您尚未告诉我们的另一个表(订单)感兴趣。在我们知道您在这里做什么之前,我们无法真正提供更多信息。您是否已经在 LINQ to SQL 中为此设置了关系?请告诉我们有关 Order 表的信息以及它与您的其他表的关系。

编辑:好的,对于修改后的问题,我怀疑我们可以完全忽略门和王国,除非我遗漏了什么。 (我也看不出这与多对多映射有何关系...)

我认为这可行:

from o in db.Order
group o by o.ClassID into g
join c in db.Class on g.Key.ClassID equals c.ClassID
select new { c.ClassID, c.Name, g.Count() };

关于C# Linq 等效于 SQL Count(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3572746/

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