如何忽略实体框架查询的条件?

jff*_*jff 0 c# sql entity-framework

我想使用具有某些限制的实体框架进行查询。问题是,有时没有限制,所以我不知道我的做法是否是最佳实践。

我的EF代码如下:

Get(x => x.CreationDate >= filterInit 
      && x.CreationDate <= filterEnd 
      && x.Cond1 > ax 
      && x.Cond2 > y).ToListAsync();   
Run Code Online (Sandbox Code Playgroud)

例如,如果ax为null,则执行此操作:

if(ax == null){
     Get(x => x.CreationDate >= filterInit 
      && x.CreationDate <= filterEnd  
      && x.Cond2 > y).ToListAsync();   
}else if(y == null)
{ 
Get(x => x.CreationDate >= filterInit 
      && x.CreationDate <= filterEnd 
      && x.Cond1 > ax ).ToListAsync();  
}else{
Get(x => x.CreationDate >= filterInit 
 && x.CreationDate <= filterEnd 
 && x.Cond1 > ax 
 && x.Cond2 > y).ToListAsync();   
}       
Run Code Online (Sandbox Code Playgroud)

我敢肯定有一个不错的方法可以做到这一点,但是我不知道怎么做。

你能帮我这个忙吗?

Dav*_*oft 6

通常的习惯用法是

IQueryable<SomeEntity> q = ...;
if (ax != null)
{
  q = q.Where(x => x.Cond1 == ax);
}
if (y != null)
{
  q = q.Where(x => x.Cond2 == y);
}
Run Code Online (Sandbox Code Playgroud)