2015-11-11 52 views
0

我有列搜索過濾器值發送到我的網頁api,我無法計算如何使where子句動態?如何使用名稱值集合創建動態where子句?

請看下面(太多代碼)!

名稱值集合:

public DataTablePager<AccountDTO> Get([FromUri] DataTableParameter param) 
     { 
      NameValueCollection nvc = HttpUtility.ParseQueryString(Request.RequestUri.Query); 

鑄造搜索值:

if (!String.IsNullOrEmpty(nvc["sSearch_0"]) && !int.TryParse(nvc["sSearch_0"], out tmpInt) || 
       !String.IsNullOrEmpty(nvc["sSearch_1"]) && !int.TryParse(nvc["sSearch_1"], out tmpInt) || 
       !String.IsNullOrEmpty(nvc["sSearch_10"]) && !int.TryParse(nvc["sSearch_10"], out tmpInt) 

設置WHERE子句:

filteredresults = filteredresults.Where(i => CorrectNumericTypes 
                 && (Lead_ID == null || i.Lead_ID == Lead_ID) 
                 && (Account_ID == null || i.Account_ID == Account_ID) 
+0

使用謂詞建設者。關於動態構建謂詞有很多問題(和答案)。 –

+0

謂語是我需要的,謝謝阿諾德。希望我能給你點數! – Chaka

回答

0

這是Pipes and Filters Architectural pattern的經典案例。 您可以根據動態(運行時)條件構建過濾器列表。或者保留一個靜態的過濾器列表,那些沒有標準的數據,數據只是通過。在數據集或查詢上應用此過濾器列表。

我不認爲你可以用LINQ來實現這一點。你可以設計一個查詢構建器(使用相同的濾鏡模式)

相關問題