私は C# でいくつかのデータ集計機能を構築しようとしています。リアルタイムのピボット テーブルに似たもの、またはselect、sum、average、first、whereおよびgroup-by( where firstis in 「最初の値を与える」という LINQ の意味)。
たとえば、Trans列Name、Date、およびで呼び出されるある種のテーブル オブジェクトと、列およびTotalで呼び出される別のテーブルがあるとPriceします。(擬似SQLで)実行するある種のインスタンスを作成したいNamePriceQuery
select Name, sum(Total), first(Price) from Trans, Price join on Name group by Name
Aggregatorデータ ソースへのリンクを持つインスタンスにそれを渡します。これに伴い、クエリが生成する行が変更されるたびにヒットするコールバックを登録したいと考えています。したがって、「XYZ」という名前のエンティティの価格が変更された場合、コールバックは、その集計された行の新しい値を含むオブジェクトでトリガーされます。またAggregator、可能な限り効率的にしたいので、値が変更されるたびにテーブルスキャンを行う必要がないように、何らかのインデックススキームを使用します。
この種のことを何と呼ぶべきかよくわかりません。私が思っているよりも桁違いに複雑ではないと仮定して、C# で何かを完全に実装できることを望んでいます。Continuous LINQ と Bindable LINQ について読んだことがありますが、どちらがこの問題に適合するか、またはパフォーマンスの問題があるかどうか (たとえば、値が変更されるたびに LINQ 集計がテーブル全体で列挙されるなど) があるかどうかはわかりませんでした。
このようなことを行うプロジェクトを知っている人はいますか? または、自分で設計/構築する方法について提案がありますか?
編集:データは実際にはデータベースにあるのではなく、メモリにあることに注意してください。