gpt4 book ai didi

.net - `SELECT MIN(ZoneMin), MAX(ZoneMin) FROM Plant` 作为 LINQ to SQL

转载 作者:行者123 更新时间:2023-12-04 02:00:41 26 4
gpt4 key购买 nike

这个相当简单的 SQL 查询在从 LINQ 尝试时被证明是非常令人困惑的。

我有一个 SQL 表 Plant带列ZoneMin .

我想找到列中值的最小值和最大值。
T-SQL 中的答案非常简单:
SELECT MIN(ZoneMin), MAX(ZoneMin) FROM Plant
什么 LINQ 查询可以让我使用这个(或一些类似的)SQL?

我在 .Aggregate() 和 .GroupBy() 上做了各种尝试,但都没有成功。我还查看了几个看起来相似的 SO 问题。

这可以通过应用于结果数组的方法简单地实现,但是当它在 T-SQL 中如此简单时,我不需要从每个 SQL 行传输值。

最佳答案

为了获得与原始查询相同的性能,您需要使用分组(通过常量以最小化影响,例如 0 ),以便您可以在同一查询中两次引用同一组记录。使用表名会导致对每个引用生成一个新查询。请尝试以下操作:

(from plant in db.Plants
group plant by 0 into plants
select new { Min = plants.Min(p => p.ZoneMin), Max = plants.Max(p => p.ZoneMin) }
).Single()

这会产生以下查询:
SELECT MIN(plants.ZoneMin), MAX(plants.ZoneMin)
FROM (SELECT 0 AS Grp, ZoneMin FROM Plants) AS plants
GROUP BY plants.Grp

优化器完成后,它会吐出与您的查询等效的内容,至少根据 SQL Server Management Studio。

关于.net - `SELECT MIN(ZoneMin), MAX(ZoneMin) FROM Plant` 作为 LINQ to SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4672239/

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