gpt4 book ai didi

c# - 如何使用 Linq 获取与 Max(value) 相邻的值?

转载 作者:行者123 更新时间:2023-11-30 20:04:03 25 4
gpt4 key购买 nike

我有一张 table :

Group | BasalArea | SpeciesName
1 | 3.6 | Palustris
1 | 45.0 | MSO
2 | 4.2 | Oak
2 | 2.0 | MSO
...

从这个表中,我想得到按 Group 字段分组的具有最高基面积的物种名称,它看起来像这样:

Group | BasalArea | SpeciesName
1 | 45.0 | MSO
2 | 4.2 | Oak

使用SQL,我可以获得最高的截面积:

SELECT Group, Max(BasalArea)
FROM TABLE
GROUP BY Group

我无法弄清楚如何在不进行循环的情况下也获得物种名称。这可能吗?处理关系的策略是什么?

最佳答案

这在 LINQ2SQL 中比在 SQL 中更简单:

var res = source.MyTable
.GroupBy(item => item.Group)
.Select(g => g.OrderByDescending(item => item.BasalArea).First())
.ToList();

这将返回其 Group 中具有最大值 BasalArea 的项目列表,以及 SpeciesName

在 SQL 中,您需要像这样连接回原始表:

SELECT * FROM TABLE b
JOIN (
SELECT Group, Max(BasalArea) as BasalArea
FROM TABLE
GROUP BY Group
) t on t.Group = b.Group AND t.BasalArea = b.BasalArea

关于c# - 如何使用 Linq 获取与 Max(value) 相邻的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13651392/

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