Laden...

Problem Linq und dynamische Property Abfrage

Erstellt von erazor vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.060 Views
E
erazor Themenstarter:in
19 Beiträge seit 2010
vor 9 Jahren
Problem Linq und dynamische Property Abfrage

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?

3.170 Beiträge seit 2006
vor 9 Jahren

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

E
erazor Themenstarter:in
19 Beiträge seit 2010
vor 9 Jahren

Hi,
Vielen Dank. Leider hat das hat schon mal nicht funktioniert. > Fehlermeldung:

Nach dem Typ "System.IComparable" kann nicht sortiert werden.