LINQ动态from子句

时间:2015-10-13 09:56:04

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

我使用动态LINQ在运行时创建查询。这是一个例子:

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

这里我可以动态更改where子句和select子句,但是动态from子句是否有任何方法?

如果我想在运行时使用其他表更改dbContext.Table1?或者我必须使用SQL吗?

编辑:关于重复的问题建议:这是同一个问题,但在这个问题上没有正确的答案。答案提供的不够通用,我将不得不为每个新表添加一个case语句......

2 个答案:

答案 0 :(得分:0)

您可以使用流动代码从表名中获取表值。希望它有所帮助。

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

答案 1 :(得分:0)

如果您知道需要检索的实体的类型,则可以使用db上下文的Set<>方法而不是Table1属性。例如:

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