特定の注文番号のコミッションを取得したい。
これは機能します:
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 句を無視する理由を知っている人はいますか?