タイプセーフな方法でLINQを使用してこれを実現する方法についてのヘルプを求めています。
多くの列がある「パフォーマンス」テーブルで検索を実行する必要があります。検索用に指定された基準に基づいて、列を選択し、指定された値でそれらの列を検索する必要があります。
private static IQueryable<Investment> PerformanceSearch(IQueryable<Investment> investments, **??? searchColumn**, double minValue, double maxValue)
{
var entity = ExtendedEntities.Current;
investments = from inv in entity.Investments
join performance in entity.Performances on inv.InvestmentID equals perfromance.InvestmentID
where **performance.searchColumn** >= minValue && **performance.searchColumn** = maxValue
return investments;
}
今私はあなたの助けを求めています:
列「searchColumn」をタイプセーフな方法でこのメソッドに渡す方法は?エンティティフレームワークから列名を維持するための何らかの方法に対応するために、辞書オブジェクトを作成することを考えていました。しかし、これを達成する方法がわかりません。
渡されたcolumnNameを使用し、where句を適用してLINQクエリを実行する方法。
以下のIfElseまたはSwitchの場合は、可能な検索列のリストです。
/*
* Search Columns can be:
* "Return1Month", "Return2Months", "Return3Months", ... almost 10 more and
* "Risk1Month", "Risk2Months", "Risk3Months", ... almost 10 more and
* "TrackingError1Month", "TrackingError2Months", "TrackingError3Months", ... almost 10 more and
* 2 more similar set of columns ...
*/
Stackoverflow、Microsoft、その他のブログに時間を費やし、Dynamic LINQの使用を検討しましたが、タイプセーフではありません。式を使えば実現できるようですが、うまくいきませんでした。
アドバイスをいただければ幸いです。
編集 -
言及すべきもう1つの項目-すべての検索列が「パフォーマンス」テーブルに表示されます。