将值传递给Linq中的OrderBy或OrderByDescending语句?

时间:2012-10-16 14:04:15

标签: c# linq

  

可能重复:
  Dynamic LINQ OrderBy

如何将值传递给Linq中的OrderBy或OrderByDescending语句?我试图动态获取属性名称:

x.GetType().GetProperty(sortField)

哪个似乎不起作用。任何想法?

private void DynamicSort(ref List<Quote> myQuotes, String sortField, String direction)
{         
        if(direction == "ASC"){
            this.grdViewDrafts.DataSource = myQuotes.OrderBy(x =>  x.GetType().GetProperty(sortField)).ToList();
        }else{
            this.grdViewDrafts.DataSource = myQuotes.OrderByDescending(x => x.GetType().GetProperty(sortField)).ToList();
        }

}

解决方案:

this.grdViewDrafts.DataSource =  myQuotes.OrderBy(x => x.GetType().GetProperty(sortField).GetValue(x, null)).ToList(); 

1 个答案:

答案 0 :(得分:4)

代码中的实际问题是您只获取PropertyInfo个对象,而不是属性值本身。要获取属性值,您必须调用GetValue()对象的PropertyInfo方法。