2012-11-23 76 views
1

是否可以在運行時指定LINQ to Entities查詢的DbSet?LINQ to Entities動態DbSet

例如,如果我有一個數字,有一個共同的特性,如「IsExpired」我可以通過DbSet到查詢不同DbSets的?

Dim query = db("myDynamicName").Where(Function(o) o.IsExpired) 

功能是:

所以,

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 

回答

1

之所以這樣,是不可能用流利的語法時變得更加清晰a

Function Func(Of In T, Out bool) 

T類型是從它前面的IQueryable Of T infered。 (這是可能的,因爲Where是一個擴展方法,所以是IQueryable的其第一輸入端參數)。因此,編譯器知道o.IsExpired是一個有效的表達式。

這意味着db("myDynamicName")必須是專門鍵入的,但它不是,或者您必須將該類型提供給Where方法。不過,這正是你想要規避的東西。

+0

尼斯的解釋,謝謝! – Newm