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 に答える