Ich habe die folgende Funktion, die mich verschiedene Werte auf der Grundlage der Eigenschaften eines Objekts, hier Client extrahiert.
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; }
}
Ich tue dies, weil ich vorher nicht weiß, welche Eigenschaftswerte ich extrahieren muss. Es funktioniert, nur das Ergebnis ist nicht sortiert.
Können Sie mir bitte helfen, die Sortierung zu korrigieren, damit das OrderBy wie erwartet funktioniert?
Die Eigenschaften sind Zeichenketten, und ich muss die Sortierung nicht verketten. Ich muss auch die Sortierreihenfolge nicht angeben.
Vielen Dank im Voraus, John.