Как написать запрос LINQ с именем столбца в качестве параметра по-прежнему безопасным способом

Я ищу помощь о том, как добиться этого с помощью LINQ безопасным способом.

Мне нужно выполнить поиск по & quot; Производительности & quot; таблица со многими столбцами. На основе критериев, указанных для поиска, мне нужно выбрать столбцы и выполнить поиск по этим столбцам с заданными значениями.

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

Теперь я ищу вашу помощь по:

How to pass column "searchColumn" to this method in a type safe way? I was thinking of creating a dictionary object to accommodate some way to maintain column names from entity framework. But not sure how to achieve this.

How to perform LINQ query using the columnName passed and applying where clause.

Я не могу использовать If Else или Switch case, как показано ниже, список возможных столбцов поиска ...

/*
 * 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, но это небезопасно. Этоseems что это достижимо с помощью выражений, но не может заставить это работать.

Любой совет приветствуется.

EDIT -

Another item to mention - all search columns are present in "performance" table.

Ответы на вопрос(4)

Ваш ответ на вопрос