我正在寻求有关如何以类型安全的方式使用 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 查询。
我不能使用 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,但它不是类型安全的。似乎使用表达式可以实现,但无法正常工作。
任何建议表示赞赏。
编辑 -
另一个需要提及的项目 - 所有搜索列都存在于“性能”表中。