2015-10-13 86 views
3

我使用动态LINQ在运行时创建查询。这里有一个例子:LINQ动态从条款

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

在这里,我可以动态改变where子句和SELECT子句,但有什么办法从条款的动态?

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

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

+4

的可能的复制[?如何建立一个动态的从LINQ查询条款(http://stackoverflow.com/questions/13796941/how-to-build-a-dynamic-from -clause-FOR-A-LINQ查询) –

回答

0

您可以使用流动代码从表名获取表值。希望能帮助到你。

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

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

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