У меня есть следующая функция, которая извлекает мне различные значения, основанные на свойствах объекта, здесь Клиент.
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 работал должным образом?
Свойства являются строками, и мне не нужно цеплять сортировку. Мне также не нужно указывать порядок сортировки.
Большое спасибо заранее,
Джон.