Entity framework 实体框架中where条件的简化
我有4个参数,我需要检查if条件并给出where条件。如何用简单的方式写它 范例Entity framework 实体框架中where条件的简化,entity-framework,c#-3.0,Entity Framework,C# 3.0,我有4个参数,我需要检查if条件并给出where条件。如何用简单的方式写它 范例 var param1, param2, param3, param4; If(param1 !=0 && param2==0 && param3==0 && param4==0) { var query = from x in xx where x.y== param1 select x;
var param1, param2, param3, param4;
If(param1 !=0 && param2==0 && param3==0 && param4==0)
{
var query = from x in xx
where x.y== param1
select x;
// where param2,param3, parma4 are 0
}
else If(param1 !=0 && param2 !=0 && param3==0 && param4==0)
{
var query = from x in xx
where x.y== param1 && x.z== param2
select x;
// where param3, parma4 are 0
}
else if .......
诸如此类您可能正在寻找这样的东西:
var query = from x in xx
where (param1 == 0 || x.y == param1)
&& (param2 == 0 || x.z == param2)
&& (param3 == 0 || x.a == param3)
&& (param4 == 0 || x.b == param4)
select x;
这种方法的缺点是有时会向数据库传递冗余参数。更好的办法是:
var query = xx;
if(param1 != 0)
query = query.Where(x => x.y == param1);
if(param2 != 0)
query = query.Where(x => x.z == param2);
if(param3 != 0)
query = query.Where(x => x.a == param3);
if(param4 != 0)
query = query.Where(x => x.b == param4);
这需要更多的输入,但将向数据库发送尽可能小的查询。不太清楚询问的内容。您可以再添加一些代码,是否要使if语句成为查询表达式的一部分?我现在已经修改了代码。希望你能理解