2010-06-24 5 views
4

J'essaie de factoriser une requête qui utilise actuellement la réflexion:type dynamique dans un LINQ to SQL requête

var dbObjects = from d in collection 
    where d.GetType().GetProperty("Id").GetValue(d, null) == id 
    select d;

Je voudrais utiliser le typage dynamique pour accéder à la propriété Id sur « d » sans sachant quel type "d" est au moment de la compilation. Quelque chose comme ceci:

var dbObjects = from (dynamic)d in collection 
    where d.Id == id 
    select d;

Est-ce possible? ... et par intérêt, est-ce plus rapide, ou le runtime dynamique utilise-t-il la réflexion sous le capot?

Merci,

Alan

+1

Comment est ce linq-to-sql? La base de données ne peut pas appeler ces méthodes de réflexion. –

Répondre

2

type dynamique utilise la réflexion sous le capot de sorte qu'il ne sera pas beaucoup plus rapide le cas échéant. Pour cette raison, je pense que votre expression Linq-To-Sql devrait fonctionner correctement. Vous pouvez vérifier que blog post. Il semble que DLR ne soit là que pour rendre votre code plus lisible.