2013-02-13 76 views
2

我有一个方法返回一个通用的列表。搜索泛型类字段名称

我希望能够传递这个方法一个字符串值,它将代表该类的名称中的一个字段,并基于此我想按此字段排序数据。我想用除开关以外的其他方式来做到这一点。

例如;

private void GetList() 
{ 
    var list = GetResearchStocks("Sedol"); 
} 

private List<Stocks> GetResearchStocks(string orderBy = "") 
{ 
    var currentResearchStockList = _reports.GetZeusData("tblResearchStocks"); 
    var researchStocklist = currentResearchStockList.AsEnumerable().ToList(); 
    _zeusResearchStocks = researchStocklist.Select(item => new ZEUS_ResearchStocks 
     { 
      Sedol = item[0].ToString(), 
      StockName = item[1].ToString(), 
     } 
    ).ToList(); 

    if (orderBy != "") 
    { 
     return _zeusResearchStocks.OrderBy(o=>o.) ?????? < What to do here? 
    } 

    return _zeusResearchStocks; 
} 

回答

2

可以选择使用Dynamic Linq库(的DLinq),或者您可以使用反射在order语句中使用字符串变量只写一个扩展方法。

有关第二个选项,请参阅this example