0

特定の注文番号のコミッションを取得したい。

これは機能します:

var expression = from commission in db.Auftraege 
                         where commission.Auftragsnummer == orderNbr
                         select new Commission() { EF_Commission = (commission as Auftrag) };

return expression.ToList();

ただし、これを動的な where 句を使用するように変換すると (さらにフィルターを適用したいため)、where 句は適用されないようです。代わりに、特定の数値のコミッションのみではなく、すべてのコミッションが返されます。

//base query
var expression = from commission in db.Auftraege select new Commission() { EF_Commission = (commission as Auftrag) };

//now add a where clause if the input parameter was specified
if (orderNbr >= 0)
    expression.Where(commission => commission.EF_Commission.Auftragsnummer == orderNbr);

 return expression.ToList();

私は十数の例を見てきましたが、それらはすべてこのようにしているようです。2 番目のクエリが where 句を無視する理由を知っている人はいますか?

4

1 に答える 1