Hi,
ich möchte gern eine Funktion schreiben, um dynamisch angegebene Properties über Linq abzufragen.
so sieht die Methode momentan aus:
public IEnumerable<Object> GetFiltersbyPropertyString(string Property)
{
var prop = typeof(WMI_Computer).GetProperty(Property);
return dc.WMI_Computer.Select(x => prop.GetValue(x, null)).Where(y => y != null).OrderBy(z => z);
}
Leider bekomme ich dabei folgende Meldung:
Fehlermeldung:
In System.InvalidOperationException ist eine Ausnahme vom Typ "System.Data.Linq.dll" aufgetreten, doch wurde diese im Benutzercode nicht verarbeitet.
Zusätzliche Informationen: Nach dem Typ "System.Object" kann nicht sortiert werden.
Lasse ich hingegen die Where und Orderby Klausel weg, funktioniert es ohne Probleme.
Kann mir da jemand auf die Sprünge helfen?
Hallo,
die Fehlermeldung ist ja eindeutig. Das OrderBy funktioniert nicht, weil der Typ nicht bekannt ist.
Versuch mal ein Cast auf IComparable
zwischen Where und OrderBy:
.Where(y => y != null).Cast<IComparable>().OrderBy(z => z)
oder benutze die Überladung von OrderBy
, der Du einen IComparer
mitgeben kannst, in dem Du dann selbst für die Sortierlogik anhand des Typen sorgen kannst.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Hi,
Vielen Dank. Leider hat das hat schon mal nicht funktioniert. > Fehlermeldung:
Nach dem Typ "System.IComparable" kann nicht sortiert werden.