OrderBy с помощью String keySelector

У меня есть следующая функция, которая извлекает отдельные значения на основе свойств объекта, здесь Client.

    public List<DistinctValue> GetDistinctValues(string propertyName)
    {
        //how should I specify the keySelector ?
        Func<string, object> keySelector = item => propertyName;

        var list = new List<DistinctValue>();
        var values = this.ObjectContext.Clients.Select(CreateSelectorExpression
                              (propertyName)).Distinct().OrderBy(keySelector);
        int i = 0;
        foreach (var value in values)
        {
            list.Add(new DistinctValue() { ID = i, Value = value });
            i++;
        }

        return list;
    }

    private static Expression<Func<Client, string>> CreateSelectorExpression
                                                        (string propertyName)
    {
        var paramterExpression = Expression.Parameter(typeof(Client));
        return (Expression<Func<Client, string>>)Expression.Lambda(
             Expression.PropertyOrField(paramterExpression, propertyName), 
                                                   paramterExpression);
    }

public class DistinctValue
{
    [Key]
    public int ID { get; set; }
    public string Value { get; set; }
}

Я делаю это, потому что не знаю, какие значения свойств мне нужно извлечь. Это работает, только результат не отсортирован.

Не могли бы вы помочь мне исправить сортировку, чтобы OrderBy работал должным образом?

Свойства являются строками, и мне не нужно связывать сортировку в цепочку. Мне также не нужно указывать порядок сортировки.

Заранее большое спасибо, Джон.

5
задан Charles Bretana 11 January 2011 в 13:35
поделиться