エンティティデータモデルには、すべてstart_dateやend_dateなどのいくつかの共通フィールドがある約20種類のレポートテーブルがあります。レポートアプリケーションが特定のレポートのデータを取得するとき、最初に行うことは今日の日付のテーブルをフィルタリングすることです。これは私が私のコード(VB)を通じて、このようなコードブロックを持っていることを意味:複数のエンティティオブジェクトに同じロジックを適用する方法
Dim data =
From r in _context.Rpt1
Where
r.start_date <= Now And
r.end_date >= Now
私は任意のテーブルをフィルタリングできるようになる関数にこのロジックを置くための方法があるはずのように思えますが、私ができます」それをどのように構造化するかを理解する。
Public Function FilterByDate(data As IEnumerable) As IEnumerable
Return From d In data Where d.start_date <= Now And d.end_date >= Now
End Function
をしかし、戻り値はジェネリックのIEnumerableあるので、私は早く、特定のレポート列に結合のすべての利点を失う:私はこれを行うことができます。
いくつかのロジックを異なるオブジェクトに適用し、その特定のオブジェクトを汎用オブジェクトの代わりに返すことができる1つの汎用関数を作成する方法はありますか?あるいは、戻り値を特定のエンティティオブジェクト型にキャストする方法はありますか?このタイプの問題を攻撃するもう1つの方法はありますか?アイデアや問題を見るさまざまな方法を探しています。