2011-06-02 43 views
2

有沒有一種方法來動態定義表名,所以如果我訪問的表對於不同的條件是不同的,我不必做多次調用?如果我可以使用變量名,我不想爲每個我正在訪問的表創建一個if/else。使用變量作爲實體表名

using (Entity ctx = new Entity()) 
{ 
    dbTableVal = "EntityTables"; 
    var query = from d in dbTableVal 
       where d == "Yes" 
       select d; 
} 

回答

1

我猜不是,因爲表本身也定義了返回的類型IQueryable<T>。使用ESQL(具有字符串語法)甚至不可能在不知道結果集類型的情況下定義泛型查詢。

+0

是的,我試着把這個工作作爲一個變量,但是發現我只做了三個表,所以我使用了一個開關而不是嘗試使用一個變量。 – 2011-06-06 18:10:44

0

,你可以創建一個接受一個「對象」和「類型」,並返回一個IQueryable的功能?

如:

private IQueryable GetQuery(object Table, Type t) 
{ 
    var query = from d in ((t)Table) where d == "Yes" select d; 
    return query; 
} 

UNTESTED!所以可能需要做一些變化,但沿着這些線可能適合你...

+2

我認爲你的方法簽名需要是私有的IQueryable GetQuery (對象表)如果你想使用類型來做這樣的轉換。 – dkackman 2011-06-02 12:40:53