【发布时间】:2018-01-04 17:51:22
【问题描述】:
好的,我的标题听起来很奇怪,但这是我的场景。我认为这是一个简单的查询,但很难在纸上解释。我自己也遇到了 LINQ 的问题。最好举例说明:
我有一个对象列表(在伪代码中),如下所示:
var data = [
{
quantity: 123,
rate: 0.12
},
{
quantity: 456,
rate: 0.13
},
{
quantity: 3,
rate: 0.14
},
{
quantity: 92,
rate: 0.15
}
]
我正在尝试生成一个返回 rate 的 LINQ 查询,该查询等于输入数量的总和。
举例说明:
使用上面的示例数据,我想找到与581(来自其他地方的变量输入)的总量相匹配的rate。我列表中的前三个对象的数量总计为 582,因此我希望我的 LINQ 查询返回 0.14(rate 匹配条件,即总 quantity 字段大于我的输入数量)。
我应该可以使用 LINQ 来执行此操作,对吗?它有点像.Sum 和.Where,这就是我感到困惑的地方。
是否有任何参考资料可以解决这种情况? 有人有写“条件总和”的经验吗?
【问题讨论】:
-
我个人认为 Linq 这样做比简单的循环更难阅读。
-
或者,如果您执行
foreach(var item in data),您可以添加 item.quantity 并在数量达到/超过阈值时返回 item.rate -
一条长的单线通常会让生活变得艰难;(
-
你的问题不一致;你说你希望总数等于一个目标值和超过一个目标值。是哪个?
-
任何数量都可以是负数吗?