2011-05-07 90 views
2

我正在構建一個動態查詢。基本上,一個函數接收一個MyParams對象,其屬性是參數;我創建了基於MyParams對象的Where子句並返回一個匿名類型的列表。linq-to-sql處理動態查詢?

那麼,這是否L2SQL支持創建一個動態查詢?我有一個數據上下文已經適用於其他查詢。根據參數的不同,我需要訪問一些表,所以我也需要動態地編寫From子句,或者我應該只包含所有的表並只關注where子句?

謝謝。

回答

3

你可以做這樣的事情,如果這是你想要什麼:

 var baseQuery = dataAccess.Table1.Where(arg => arg.Field1 = 1); 

     if (parameter[1] = true) 
     { 
      baseQuery = baseQuery.Where(arg => arg.Field2 = 'Test'); 
     } 

     if (parameter[2] = true) 
     { 
      baseQuery = 
       from x in baseQuery 
       join y in dataAccess.Table2 on 
        x.Id equals y.Id 
       where y.Field3 = 'Something' 
       select x; 
     } 

     return baseQuery.ToList(); 
+0

如果我一直在使用(MYDC TheDC =新MYDC()),是如何工作的呢?我該怎麼處理multiple from子句? – frenchie 2011-05-07 19:03:28

+0

@frenchie在實現查詢之前不要處理「MyDC」。換句話說,'return baseQuery.ToList()'應該在'using'語句中。 – 2011-05-07 19:17:10

+0

好,感謝您的建議 – frenchie 2011-05-07 19:21:39

1

您應該能夠使用我的answer另一個問題。你的問題不是一個確切的副本你的是更通用的,但爲什麼解決這個問題是完全一樣的。