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