实体框架查询表名称动态地基于输入参数

时间:2015-11-22 13:10:59

标签: c# entity-framework linq entity-framework-4

我一直在使用Entity Framework作为ORM数据模型来连接SQL数据库并检索数据的项目。

现在用于检索数据的基本查询就像这样

ProjectDataContext dataContext = new ProjectDataContext();   

var result = (from project in dataContext.Projects
              select project).ToList();

或者在lambda中

List<Project> lstprojects = dataContext.Projects.Take(10);

现在我想根据一些输入参数动态传递表名。我怎样才能做到这一点?

我目前的做法有点混乱。

if(tableName = "A")
{
     List<A> lstOfA = dataContext.A.Take(10);
}
else if(tableName = "B")
{
     List<B> lstOfB = dataContext.B.Take(10);
}

依旧......

我的问题是,如果有一个干净利落的方式可以做到这一点,如果不写那么多,否则因为我知道它可能会导致将来出现性能问题。

由于

1 个答案:

答案 0 :(得分:1)

在经过一些试验和错误后,我能够像这样做 -

var type = Type.GetType("A");
context.Set(type).Load();
var result = context.Set(type).Local.Cast<object>().ToList();

希望它有所帮助。