如何在lambda实体框架中对动态进行排序?

时间:2015-12-24 02:00:13

标签: c# entity-framework sorting lambda sql-order-by

我想在lambda实体框架中对动态进行排序。我创建它的时间更长,但似乎不起作用。

records <- subset(df2,Date %in% df1$Date)

我尝试关注

////string column_name // the name of column in table   <<< don't care this, I finished
////string sort_order  // ASC or DESC    <<< don't care this, I finished

using (var db = new ABCEntities())
{
    // get dynamic type of column name , but i can not 
    // ???????????
    var columnExp = typeof(LOCATION).GetProperty(column_name);

    IEnumerable<LOCATION> query = db.LOCATIONs;
    if(sort_order = "ASC")
    {
        query = query.OrderBy(columnExp).Tolist();  
    }
    else
        query = query.OrderByDescending(columnExp).Tolist();    
}

但在

处得到错误
query = db.LOCATIONs.OrderByDescending(q => q.GetType().GetProperty(column_name).GetValue(q, null)).ToList();

你能告诉我一些错误或错误以及如何解决这个问题吗? 非常感谢你。

1 个答案:

答案 0 :(得分:3)

如何使用Dynamic Linq? 它可以从字符串生成查询。

using (var db = new ABCEntities()){
  var columnExp = "columnName";
  var query = db.LOCATIONs;
  if(sort_order = "ASC")
  {
      query = query.OrderBy(columnExp).Tolist();  
  }
  else
  {
      query = query.OrderByDescending(columnExp).Tolist();
  }
}