有沒有一種方法來動態定義表名,所以如果我訪問的表對於不同的條件是不同的,我不必做多次調用?如果我可以使用變量名,我不想爲每個我正在訪問的表創建一個if/else。使用變量作爲實體表名
using (Entity ctx = new Entity())
{
dbTableVal = "EntityTables";
var query = from d in dbTableVal
where d == "Yes"
select d;
}
有沒有一種方法來動態定義表名,所以如果我訪問的表對於不同的條件是不同的,我不必做多次調用?如果我可以使用變量名,我不想爲每個我正在訪問的表創建一個if/else。使用變量作爲實體表名
using (Entity ctx = new Entity())
{
dbTableVal = "EntityTables";
var query = from d in dbTableVal
where d == "Yes"
select d;
}
我猜不是,因爲表本身也定義了返回的類型IQueryable<T>
。使用ESQL(具有字符串語法)甚至不可能在不知道結果集類型的情況下定義泛型查詢。
,你可以創建一個接受一個「對象」和「類型」,並返回一個IQueryable的功能?
如:
private IQueryable GetQuery(object Table, Type t)
{
var query = from d in ((t)Table) where d == "Yes" select d;
return query;
}
UNTESTED!所以可能需要做一些變化,但沿着這些線可能適合你...
我認爲你的方法簽名需要是私有的IQueryable GetQuery
是的,我試着把這個工作作爲一個變量,但是發現我只做了三個表,所以我使用了一個開關而不是嘗試使用一個變量。 – 2011-06-06 18:10:44