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;
             // 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 .......

等々

4

1 に答える 1

2

あなたはおそらく次のようなものを探しています:

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);

これはもう少し入力が必要ですが、可能な限り最小のクエリをデータベースに送信します。

于 2012-07-06T05:29:15.343 に答える