2012-09-10 83 views
1

Possible Duplicate:
build linq queries dynamicallyC#LINQ查詢生成動態

LINQ更新查詢動態

我有一個方法通過代碼編號,例如如果代碼爲1,那麼我選擇來自tbl A的數據,並且如果我想從tbl中選擇代碼-2,則B選擇來自tbl B的數據B

例如,我試圖做:但是代碼does not工作

public static void Update(int code, int userid) 
{ 
    var query = 
      (from t1 in code == 1? dataContext.tb1 : dataContext.tb2 
      where t1.Id == userid 
      select t1).SingleOrDefault(); 
} 

我怎麼能動態生成的查詢?

感謝

+0

假設tb1和tb2是不同的類型,你不能。 –

+0

你是什麼意思不同類型的表? – Ben

+1

定義「不起作用」。你得到什麼錯誤? – millimoose

回答

1

它不是從你的問題很明顯,但聽起來就像你正在使用的數據庫訪問一些LINQ包裝。如果是這種情況,那麼最有可能的是您無法創建具有數據源條件的查詢。以這樣的箱子,如果最簡單的方法是將箱子兩個查詢那樣簡單:

public static void Update(int code, int userid) 
{ 
    SomeType result; 
    if(code == 1) 
    { 
     result = 
     (from t1 in dataContext.tb1 
     where t1.Id == userid 
     select t1).SingleOrDefault(); 
    } 
    else 
    { 
     result = 
     (from t1 in dataContext.tb2 
     where t1.Id == userid 
     select t1).SingleOrDefault(); 
    } 
    // and do something with result 
} 

編輯

在您現在使用的LINQ to SQL因此上述立場顯然表明。但是你的錯誤比較容易,因爲你有三元運算符,在真假兩邊返回兩種不同的類型,這就是錯誤。