【发布时间】:2011-03-15 22:52:09
【问题描述】:
我正在寻找在 C# 中构建一些数据聚合的东西,我想要类似于实时数据透视表的东西,或者某种持续更新的 SQL 查询,支持select、sum 、average、first、where 和 group-by(其中first 是 LINQ 意义上的“给我第一个值”)。
例如,我可能有一个名为Trans 的表对象,其列Name、Date 和Total,以及另一个名为Price 的表,其列Name 和Price .我想创建某种 Query 实例来执行(在伪 SQL 中)
select Name, sum(Total), first(Price) from Trans, Price join on Name group by Name
并将其传递给具有数据源链接的Aggregator 实例。除此之外,我想注册一个回调,只要查询产生的行发生更改,就会触发该回调。因此,如果名为“XYZ”的实体的价格发生变化,回调将触发一个包含该聚合行的新值的对象。我还希望Aggregator 尽可能高效,因此它会有某种索引方案,这样每当值发生变化时就不需要进行表扫描。
我不太确定如何称呼这种东西,我希望能够完全在 C# 中实现一些东西,假设它没有比我想象的复杂一个数量级。我已经阅读了有关 Continuous LINQ 和 Bindable LINQ 的信息,但我真的不知道它们是否适合这个问题,或者是否存在性能问题(例如,每当值更改时,LINQ 聚合就会在整个表中枚举)。
有没有人知道我可以查看的执行此类操作的项目,或者对如何自己设计/构建它有建议?
编辑:我应该注意,数据实际上不会在数据库中,而是在内存中。
【问题讨论】:
标签: c# real-time aggregation