我想检索具有特定订单号的佣金。
这有效:
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();
我看过十几个例子,但他们似乎都是这样做的。有谁知道为什么第二个查询忽略 where 子句?