gpt4 book ai didi

c# - 有没有办法检查结果集中的一行或多行总和是否为特定值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:38:58 24 4
gpt4 key购买 nike

这是一个复杂的问题,请耐心等待。假设我有一个返回一组整数的查询。

2387<br/>
3357<br/>
3471<br/>
4885<br/>
5867<br/>
6170<br/>
8170<br/>
9777<br/>
12970<br/>
13190<br/>
17670<br/>
20470<br/>
160159

这些显而易见的东西对我来说都有意义,即使很难看出它们对你有何作用。为方便起见,它们代表一种测量。现在我的第一个尝试是将特定的数据库值与通过上传过程获得的数字匹配在这种情况下,我想匹配 37,174

现在,很明显,通过查看您可以看到没有一条记录与我正在寻找的数量相匹配。我真正的问题是,是否有任何方法可以查看某些金额的某种组合是否总计为我正在寻找的金额。我正在寻找最好能够融入 SQL 查询的东西,但我使用 C# 进行所有处理,因此如果我缺少可以利用的东西,请朝着正确的方向轻推将不胜感激。我尝试了谷歌搜索,但由于问题措辞的微妙,我找不到任何相关/有用的东西。还是个新手,所以我不知道 C# 中是否只有一个方法或一个类,或者 Postgres 的某些功能是否允许这样做。

编辑** 我知道如何使用循环来完成它,但我知道那将是一个糟糕的性能选择。

最佳答案

使用 Combinatronics Library :

var values = new int[] { 1, 2, 3, 4, 5};
var target = 9;
var candidates = Enumerable.Range(1,values.Count())
.SelectMany(x => new Combinations<int>(values, x))
.Where(x => x.Sum() == target);

这将为您提供符合您的目标值的所有可能组合。如果您更喜欢第一个(使用 FirstOrDefault())或应用更多逻辑,则由您决定。

在您的示例中,没有任何组合加起来等于 37174

关于c# - 有没有办法检查结果集中的一行或多行总和是否为特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16818615/

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