2012-03-14 61 views
0

動態查詢不夠動態。我曾見過像this解決方案,但我仍然要指出爲基礎,使用哪個表:Linq To Entities - 如何在表名稱爲參數的情況下創建查詢

var query = db.Customers.Where("...").OrderBy("...").Select("..."); 

我想創建一個簡單的查詢工具,當用戶將使用一個下拉列表中可用表中選擇。結果,我想顯示最初的幾條記錄。因此,我也需要更改表!也就是說,我需要的是這樣的:

string selectedTable = "Customers"; 
var [tableName] = SomeTypecastingOperations(selectedTable); 
var query = db.[tableName].Where("...").OrderBy("...").Select("..."); 

是EF 動態足以應付呢?

回答

0

Linq-to-entities不支持。你可以通過Entity SQL或者一些醜陋的代碼來達到這個目的,這些代碼會爲你想要查詢的每個集合設置條件邏輯(比如表名爲switch)。

+0

我很好奇你的_big switch_解決方案。一方是我的'selectedTable',另一方沒有多態超類:( 我可以爲這個開關寫一個代碼生成器,但是我不能返回像'ObjectSet '或'ObjectSet '等不同的結果。 – 2012-03-14 13:25:43

+0

這個開關不會返回任何東西,它會直接填滿你的用戶界面 – 2012-03-14 14:00:23

+0

現在我明白你的意思是**難看** :-) – 2012-03-14 14:13:51