2012-11-07 15 views
5

ottengo oggetti diOttieni la lista di oggetti da un tipo di dato da una stringa di

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

Come posso ottenere un List degli oggetti con un tipo di dato da una stringa?

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

risposta

4

Che cosa si sta cercando di fare, non può essere fatto in modo statico: var corrisponde al statica tipo dell'espressione , mentre il tipo di espressione a destra è chiaramente non statico (è IEnumerable<T>, dove T non è noto prima del runtime).

Questo, tuttavia, è legale:

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

Ciò produrrebbe un IEnumerable<ObjectStateEntry>.

+0

Nota, questo restituirà corrispondenze e corrispondenze esatte in cui l'elemento è una classe base di 'typ'. –

+0

@JustinHarvey Giusto, questa è la stessa cosa di "OfType ". – dasblinkenlight

1

Come su

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

Nota che il suo tornerà partite in cui i tipi sono corrispondenze esatte (invece di essere nello stesso albero di ereditarietà).

Problemi correlati