IQueryable 不会在 SQL 中附加 WHERE 语句

本文关键字:WHERE 语句 SQL IQueryable | 更新日期: 2023-09-27 18:30:55

我正在使用带有MySQL服务器的EF6。我正在尝试根据变量是否为空动态附加 WHERE 子句。
这是我的代码:

using (var dbContext = new Entities())
{
    IQueryable<Boxes> boxes = dbContext.Boxes;
    if(this.Customer != null)
        boxes.Where(box => box.CurrentCustomer == this.Customer);    
    if(this.IDs != null)
        boxes.Where(box => this.IDs.Split(',').Any(id => id == box.ID.ToString()));  
    return new Response() { Success = true, Result = boxes.ToList() };
}

但是,WHERE 子句不会筛选数据,并且将返回表中的所有行。同样在MySQL日志中,我看到了不包含WHERE子句的语句:

1994 Query SELECT
`Extent1`.`ID`,
`Extent1`.`CurrentCustomer`
FROM `Boxes` AS `Extent1`

我用IQueryable错了吗?

IQueryable 不会在 SQL 中附加 WHERE 语句

调用方法时需要保存查询Where

IQueryable<Boxes> boxes = dbContext.Boxes;
if(this.Customer != null)
   boxes= boxes.Where(box => box.CurrentCustomer == this.Customer);    
if(this.IDs != null)
    boxes=boxes.Where(box => this.IDs.Split(',').Any(id => id == box.ID.ToString())); 
//...