【发布时间】:2016-04-23 23:43:38
【问题描述】:
我将 EF6 与 MySQL 服务器一起使用。我正在尝试根据变量是否为空来动态附加 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?
【问题讨论】:
-
您确定
this.Customer和this.Ids不为空吗? -
在 Linq 中,
.Where实际上返回了一个结果。 -
当然。做了一步步调试
标签: c# mysql entity-framework linq linq-to-entities