1

(我使用的是 C#,但这不一定是特定于平台的)

假设我有一个值表,它由三个键(A、B、C)索引。表中的值不时从外部源流入。我想发布关于各种键集的聚合,例如计算 B = b1 的所有值的总和。

如果我每次都遍历整个表,这很简单,但显然这不是有效的。我想知道的是,是否有一种特别好的方法来设计这样的东西,以便我只sum(B = b1)在表中的值更改会影响这个总和时更新?似乎我需要创建某种Aggregation对象来维护包含在该聚合中的每个值的列表,但我觉得可能有一种更优雅的方式可以逃避我。类似于“实时” LINQ 查询...

4

2 回答 2

1

使用Dictionary<TypeOfB, int>. 每次添加新 b 时,请执行

dictionary[b] += value;

如果值发生变化,请执行

dictionary[b] += (newValue - oldValue)
于 2010-01-25T19:19:36.870 回答
0

好吧,对于您提出的简单示例,为什么不创建一个事件,例如,OnValueChanging表明价值即将发生变化?然后您可以记录当前值,例如x。然后触发另一个事件OnValueChanged并记录新值,例如y. 那么您要更新的总和是currentSum - x + y

于 2010-01-25T19:17:52.990 回答