2015-07-13 190 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