1

可能重复:
动态 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(); 
4

1 回答 1

4

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

于 2012-10-16T14:17:40.747 回答