如何在Where子句中使用Condition?
用户可以从列表中选择部分,产品和型号并查看结果。
我在所有文件中添加了一个项See All
,如果用户选择See All
,他可以在所有部分看到所有产品。所以我想写
如果每个属性等于-1 dot,则检查值的查询。
//My Model
struct Model
{
public int SectionCode{get;set;}
public int ProductCode{get;set;}
public int ModelCode{get;set;}
}
var query=DBContext.Model.Where(data=>data.ModelCode==_ModelCode//if ModelCode!=-1
&& ProductCode==_ProductCode//if ProductCode!=-1
&& SectionCode==_SectionCode//if SectionCode!=-1 )
我知道我可以用一些if
来写它但我必须检查很多条件。所以我想知道,如果在Clause的哪个地方我怎么写?
答案 0 :(得分:9)
如果您不需要,请不要添加where子句,即:
IQueryable<Model> query = DBContext.Model;
if(_ModelCode != -1)
{
query = query.Where(data=>data.ModelCode==_ModelCode);
}
if(_ProductCode!= -1)
{
query = query.Where(data=>data.ProductCode==_ProductCode);
}
if(_SectionCode!= -1)
{
query = query.Where(data=>data.SectionCode==_SectionCode);
}
答案 1 :(得分:4)
试试这个:
var query=DBContext.Model.Where(data => (ModelCode == -1 || data.ModelCode == _ModelCode)
&& (ProductCode == -1 || ProductCode == _ProductCode)
&& (SectionCode == -1 || SectionCode == _SectionCode)
答案 2 :(得分:4)
您可以使用逻辑运算符实现此目的:
var query = DBContext.Model.Where(data =>
(_ModelCode == -1 || data.ModelCode == _ModelCode)
&& (_ProductCode == -1 || data.ProductCode == _ProductCode)
&& (_SectionCode == -1 || data.SectionCode == _SectionCode))