2010-08-19 5 views
0

J'ai une propriété enfant d'une propriété enfant dans mon entité. J'ai une méthode Get en tant que tel:LINQ - Inclure la propriété enfant de la propriété enfant

List<T> Find(Expression<Func<T, bool>> where, 
      params Expression<Func<T, object>>[] toInclude); 

La façon dont je charge normalement juste la première propriété de l'enfant est de le faire:

myManager.Find(x => x.Id == id, x.ChildB); 

Cependant, je voudrais pouvoir retirer le ChildC propriété qui est un enfant de ma propriété ChildB.

Y a-t-il un moyen d'effectuer cela avec la signature de méthode que j'ai fournie? Je sais normalement que je pourrais faire un .Include ("ChildB.ChildC").

Edit: Ajout de code par demande

using(MyContext context = new MyContext()) 
{ 
    ObjectQuery<T> objectQuery = (ObjectQuery<T>)context.CreateObjectSet<T>(); 
    foreach(var include in toInclude) 
    { 
     objectQuery = objectQuery.Include(include); 
    } 

    return objectQuery.Where<T>(where); 
} 
+0

brandon - toute chance, vous pouvez également inclure la mise en œuvre de la Liste stub méthode Find() ?? étant donné que, je suis sûr que je pourrais faire un coup décent au problème. merci ... –

+0

Code ajouté par demande. – Brandon

+0

ok -gotcha, jetterai un coup d'oeil là-dessus et voir si je peux «ajouter de la valeur» .. –

Répondre

0

Si vous parlez de LINQ to SQL, alors vous configurez le DataContext avant d'exécuter toutes les requêtes contre elle.

Quelque chose comme:

var options = new DataLoadOptions(); 
options.LoadWith<ChildB>(b => b.ChildC); 
dataContext.LoadOptions = options; 
+0

Je fais LINQ-to-Entities, cependant, j'espérais que le développeur pourrait passer une liste de propriétés de navigation qu'ils voulaient inclure sans avoir à faire face au contexte. – Brandon

Questions connexes