2

如何在 Where 子句中使用条件?

用户可以从列表中选择部分、产品和型号并查看结果。我在所有字段中添加一个项目See All,如果用户选择See All,他可以看到所有部分中的所有产品。所以我想编写一个查询来检查值是否每个属性都等于 -1 点带来 where 条件。

//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但我必须检查很多条件。所以我想知道,如果在 where 子句中,我该怎么写?

4

3 回答 3

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);
} 
于 2013-10-27T15:15:53.883 回答
4

尝试这个 :

var query=DBContext.Model.Where(data => (ModelCode == -1 || data.ModelCode == _ModelCode) 
&& (ProductCode == -1 || ProductCode == _ProductCode)
&& (SectionCode == -1 || SectionCode == _SectionCode) 
于 2013-10-27T15:13:13.487 回答
4

您可以使用逻辑运算符来实现这一点:

var query = DBContext.Model.Where(data =>
    (_ModelCode   == -1 || data.ModelCode == _ModelCode)
 && (_ProductCode == -1 || data.ProductCode == _ProductCode)
 && (_SectionCode == -1 || data.SectionCode == _SectionCode))
于 2013-10-27T15:13:25.973 回答