2012-11-07 4 views
5

ich Objekte vondurch eine Art durch eine Zeichenfolge angegeben Liste der Objekte Erste

IEnumerable<ObjectStateEntry> om = context.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Modified);   

bekommen Wie kann ich eine List der Objekte mit einer Art von einer Reihe gegeben werden?

Type typ = Type.GetType("mytype"); 
var om2 = om.Select(s => s.Entity).OfType<typ>(); // does not work 

Antwort

4

Was Sie versuchen können zu tun, nicht statisch erfolgen: var entspricht dem statischen Typ des Ausdrucks, während die Art des Ausdrucks auf der rechten Seite ist eindeutig nicht statisch (es ist IEnumerable<T>, wo T nicht bekannt ist vor der Laufzeit).

Dies ist jedoch legal:

var om2 = om.Select(s => s.Entity).Where(v => typ.IsInstanceOfType(v)); 

Dies würde eine IEnumerable<ObjectStateEntry> produzieren.

+0

Hinweis, dies wird genaue Übereinstimmungen und Übereinstimmungen zurückgeben, wo das Element eine Basisklasse von 'typ' ist. –

+0

@JustinHarvey Richtig, das ist das Gleiche, was der 'OfType ' tut. – dasblinkenlight

1

Wie wäre es

Type typ = Type.GetType("mytype"); 
var om2 = om.Select(s => s.Entity).Where(e=>typeof(e) == typ); 

Beachten Sie, dass Spiele zurück, wo die Typen sind genaue Treffer (im Gegensatz zu in der gleichen Vererbungsbaum zu sein).

Verwandte Themen