LINQ动态from子句

本文关键字:子句 from 动态 LINQ | 更新日期: 2023-09-27 18:17:21

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

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

在这里我可以动态地改变where子句和select子句,但是有没有办法动态地改变from子句呢?

如果我想更改dbContext。表1与其他表在运行时?还是必须使用SQL ?

编辑:关于重复问题建议:这是同一个问题,但是那个问题没有正确答案。如果答案不够通用,我将不得不为每个新表放置一个case语句…

LINQ动态from子句

可以使用流畅的代码从表名中获取表值。希望能有所帮助。

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

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

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