2015-07-13 231 views
0

我有一些問題在linq查詢(where)中創建條件。根據某些條件創建內部條件。 我想根據兩個屬性(id_indice_prix,date_indice)過濾一個Indice列表。我可以過濾他們兩個或只有一個。你有什麼建議嗎? 什麼我現在做的是,我得到的所有行從數據庫的LINQ to entites的,然後我做,如果condtion過濾器的基礎條件:動態創建linq查詢

var listeIndiceActualisationPrix = UnitOfWork.Indices_actualisation_prix.ToList(); 

     if (IdIndicePrix != 0) 
      listeIndiceActualisationPrix = listeIndiceActualisationPrix.Where(x => x.id_indice_prix == IdIndicePrix).ToList(); 


     if(Annee !=0) 
      listeIndiceActualisationPrix = listeIndiceActualisationPrix.Where(x => x.date_indice.Value.Year == Annee).ToList(); 

回答

0

不要把每次.ToList()。當您撥打.ToList()時,將執行查詢。在沒有.ToList()的情況下動態構建查詢,並在if語句末尾執行.ToList()以使用適當的WHERE語句查詢數據庫。

+0

如果沒有第一個.ToList(),我無法避免使用過濾器來偵聽動作過程。 – ucef

+0

@ucef你的錯誤信息是什麼?你的'UnitOfWork'是什麼,它是你的'ObjectContext'嗎? – stephanejulien

+0

是的,它是ObjectContext。我沒有任何錯誤,但我只想避免獲取所有行,然後根據條件進行過濾。我想知道在編譯時動態構造條件是否可行 – ucef