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

我看过十几个例子,但他们似乎都是这样做的。有谁知道为什么第二个查询忽略 where 子句?

4

1 回答 1

1

您需要将临时分配expression给某物(也许分配给它自己)。expression.Where()不会改变现有的查询 - 它返回一个新的。

所以:

expression = expression.Where(...);
于 2013-01-31T13:43:18.740 回答