gpt4 book ai didi

c# - 在 C# 中的给定变量之间的表中查找最小值和最大值

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

我有以下数据库表:

COL-A COL-B
1 $200
2 $100
4 $50
5 $40

我需要做的是,如果我有值 1.5,我需要找到介于它之间的两个数字,所以这将是 1>2

我需要将这些值输入到我正在使用的定价计算器的线性方程中。

值可能并不总是相同的,所以它甚至可能是这样的:

COL-A COL-B
1 $200
6 $100
11 $50
22 $40

如果我有 9,那么我会同时返回 611,因为 9 介于两者之间两个值等等

可视化我需要将它们放入单独的变量中:

double Min = the_lowest_value;
double Max = the_highest_value;

我正在使用 EF 来执行此操作,因此它需要在 LINQ 中。

最佳答案

需要 2 个数据库请求的简单解决方案:

double the_lowest_value = Ctx.YourEntities
.Where(z => z.ColA <= 9)
.OrderByDesc(z => z.ColA)
.Select(z => z.ColA)
.First();

double the_highest_value = Ctx.YourEntities
.Where(z => z.ColA >= 9)
.OrderBy(z => z.ColA)
.Select(z => z.ColA)
.First();

请注意,如果您的值(上例中的 9)在您的表中,则两个变量将具有相同的值(9)。


编辑:正如 Slauma 所注意到的,如果指定值低于/大于 ColA 的任何值,这将崩溃(即抛出 InvalidOperationException 异常),因为 First() 要求返回序列中至少有一个元素。如果序列为空,您可以使用 FirstOrDefault() 返回默认的 double 值:

对于正值:

因为 default(double)0.0the_lowest_value 的值是可以的(如果指定的输入值是 0.5 你的第二个例子)。对于 the_highest_value,您可以在数据库查询后测试它实际上是否大于或等于指定的输入值。如果不是这种情况,您就会知道您指定的值大于 ColA 列的每个值。

关于c# - 在 C# 中的给定变量之间的表中查找最小值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11882173/

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