我使用动态LINQ在运行时创建查询。这是一个例子:
var result = dbContext.Table1
.Where(x => x.Field1 == "SomeValue")
.Select(x => new { x.Field1, x.Field2 });
这里我可以动态更改where子句和select子句,但是动态from子句是否有任何方法?
如果我想在运行时使用其他表更改dbContext.Table1?或者我必须使用SQL吗?
编辑:关于重复的问题建议:这是同一个问题,但在这个问题上没有正确的答案。答案提供的不够通用,我将不得不为每个新表添加一个case语句......
答案 0 :(得分:0)
您可以使用流动代码从表名中获取表值。希望它有所帮助。
var table = (ITable)dbContext.GetType()
.GetProperty(tableName)
.GetValue(dbContext, null);
答案 1 :(得分:0)
如果您知道需要检索的实体的类型,则可以使用db上下文的Set<>
方法而不是Table1
属性。例如:
var data = dbContext.Set<EntityType>();