可能重复:
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();
答案 0 :(得分:4)
代码中的实际问题是您只获取PropertyInfo
个对象,而不是属性值本身。要获取属性值,您必须调用GetValue()
对象的PropertyInfo
方法。