【问题标题】:Linq statement fails with dynamic where clauseLinq 语句因动态 where 子句而失败
【发布时间】:2013-01-15 15:13:01
【问题描述】:

我想检索具有特定订单号的佣金。

这行得通:

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 子句吗?

【问题讨论】:

    标签: linq dynamic where-clause


    【解决方案1】:

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

    所以:

    expression = expression.Where(...);
    

    【讨论】:

    • @user1870077 哦……我自己去过那里很多次!
    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多