I need to make a dynamic query similar to the example below
String tabela = "NomeTabela";
Var x = db.("NomeTabela").ToList();
Something like that where the table name will change as needed.
I need to make a dynamic query similar to the example below
String tabela = "NomeTabela";
Var x = db.("NomeTabela").ToList();
Something like that where the table name will change as needed.
In your class DbContext
create a method, for example, Set
, which returns DbSet
from the name passed in parameter (from your table):
public DbSet Set(string name)
{
// talvez seja necessário adicionar o namespace do seu contexto
return base.Set(Type.GetType(name));
}
Then you can do a query like this:
using (var db = new YourDataContext())
{
// Como o DbSet não é genérico, não pode utilizar o código assim:
// db.Set("Namespace.EntityName").AsQueryable().Where(a=> a.HasSomeValue...
// As suas queries devem também ser à base de strings
// Precisa utilizar o package/namespace nuget "System.Linq.Dynamic"
var results = db.Set("Namespace.EntityName").AsQueryable().Where("SomeProperty > @1 AND SomeThing < @2", aValue, anotherValue);
// agora consegue iterar a coleção dos objetos resultante
}
Answer given in SOen : Dynamic table name in Linq
More information about System.Linq.Dynamic
here .