是否可以在运行时指定LINQ to Entities查询的DbSet?
例如,如果我有许多不同的DbSet具有公共属性,例如“IsExpired”,我可以将DbSet传递给查询吗?
所以,
Dim query = From o In db.Products Where o.IsExpired = True
看起来像,
Dim myDynamicName As String
myDynamicName = "Products"
Dim query = From o In db("myDynamicName") Where o.IsExpired = True
答案 0 :(得分:1)
使用流利语法时,无法实现此目的的原因更为明白:
Dim query = db("myDynamicName").Where(Function(o) o.IsExpired)
该功能是
Function Func(Of In T, Out bool)
并且T
的类型来自它之前的IQueryable Of T
。 (这是可能的,因为Where
是一个扩展方法,因此IQueryable是它的第一个输入参数)。因此,编译器知道o.IsExpired
是一个有效的表达式。
这意味着db("myDynamicName")
必须是特定类型的,它不是,或者您必须为Where
方法提供类型。但这正是你试图规避的事情。