我正在寻找在 C# 中构建一些数据聚合的东西,我想要类似于实时数据透视表的东西,或者某种持续更新的 SQL 查询,支持select, sum, average, first, where, 和group-by(where firstis in “给我第一个值”的 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 聚合在整个表中枚举)。
有谁知道我可以查看的类似这样的项目,或者对如何自己设计/构建它有建议?
编辑:我应该注意,数据实际上不会在数据库中,而是在内存中。