2015-10-13 3 views
3

J'utilise LINQ dynamique pour créer des requêtes en cours d'exécution. Voici un exemple:LINQ dynamic from clause

var result = dbContext.Table1 
.Where(x => x.Field1 == "SomeValue") 
.Select(x => new { x.Field1, x.Field2 }); 

Ici, je peux modifier dynamiquement la clause where et clause select, mais est-il un moyen de dynamique de la clause?

Si je veux changer dbContext.Table1 avec une autre table en cours d'exécution? Ou je dois utiliser SQL pour cela?

EDIT: À propos de la suggestion de question en double: C'est la même question, mais il n'y a pas de bonne réponse dans cette question. La réponse fournie n'est pas assez générique, je devrais mettre une déclaration de cas pour chaque nouvelle table ...

+4

double possible de [Comment construire une dynamique clause FROM pour une requête LINQ] (http://stackoverflow.com/questions/13796941/how-to-build-a-dynamic-from -clause-for-a-linq-query) –

Répondre

0

Vous pouvez utiliser le code qui coule pour obtenir la valeur de la table à partir du nom de la table. J'espère que cela aide.

var table = (ITable)dbContext.GetType() 
         .GetProperty(tableName) 
         .GetValue(dbContext, null); 
0

Si vous connaissez le type de l'entité que vous devez récupérer, vous pouvez utiliser la méthode Set<> de votre contexte db au lieu de la propriété Table1. Par exemple:

var data = dbContext.Set<EntityType>();