gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:05:35 25 4
gpt4 key购买 nike

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

我有一个包含 ZoneMin 列的 SQL 表 Plant

我想找到列中值的最小值和最大值。
T-SQL 中的答案非常简单:

从植物中选择 MIN(ZoneMin)、MAX(ZoneMin)

什么是可以让我使用此(或一些类似的)SQL 的 LINQ 查询?

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

这可以简单地通过应用于结果数组的方法来实现,但我不需要从每个 SQL 行传输一个值,因为它在 T-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/12068233/

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