我想要检索具有特定订单号的佣金。
这有效:
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子句?
答案 0 :(得分:1)
您需要将临时expression
分配给某些内容(可能是自身)。 expression.Where()
不会更改现有查询 - 它会返回一个新查询。
所以:
expression = expression.Where(...);