Jak napisać zapytanie LINQ z nazwą kolumny jako parametr nadal w bezpieczny sposób

Szukam pomocy, jak to osiągnąć za pomocą LINQ w bezpieczny sposób.

Muszę przeprowadzić wyszukiwanie w tabeli „Performance” z wieloma kolumnami. Na podstawie kryteriów określonych dla wyszukiwania muszę wybrać kolumny i przeprowadzić wyszukiwanie w tych kolumnach z podanymi wartościami.

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;
}

Teraz szukam twojej pomocy na:

Jak przekazać kolumnę „searchColumn” tej metodzie w bezpieczny sposób? Myślałem o stworzeniu obiektu słownika, aby pomieścić jakiś sposób na utrzymanie nazw kolumn ze struktury encji. Ale nie wiem, jak to osiągnąć.

Jak wykonać kwerendę LINQ za pomocą parametru columnName i zastosować klauzulę where.

Nie mogę użyć przypadku If Else lub Switch, jak poniżej, to lista możliwych kolumn wyszukiwania ...

/*
 * 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 ... 
 */

Spędziłem czas na Stackoverflow, Microsoft i innych blogach i rozważałem użycie Dynamic LINQ, ale nie jest to bezpieczne. Towydaje się że można to osiągnąć za pomocą wyrażeń, ale nie udało się tego osiągnąć.

Wszelkie porady są mile widziane.

EDYTOWAĆ -

Kolejny element, o którym należy wspomnieć - wszystkie kolumny wyszukiwania są obecne w tabeli „wydajność”.

questionAnswers(4)

yourAnswerToTheQuestion