Linq to Entities 使用实现 IQueryable 的 ObjectQuery。我通常使用 IQueryable 方法来过滤我的数据,但今天我需要创建一个特殊的 LIKE 语句。该框架一直认为它很聪明,并用波浪号“转义”了我的通配符“%”,这使得我的特殊 LIKE 语句无效。因此,在四处挖掘之后,我发现 ObjectQuery 上的 Where 方法有一个重载,它允许您将字符串与 ObjectParameters 一起传递。我已经这样做了,但它不像 IQueryable 那样执行。当我运行应用程序时,命中此代码后什么也没有发生。没有错误,也没有命中数据库,所以我知道我创建的查询实际上并没有执行。
我该如何处决这只小狗?
public IQueryable<tbl_Path> GetPathsByWildCardSearch(string searchTerm)
{
return this.ObjectContext.tbl_Path
.Where("FullPath NOT LIKE @p0 and FullPath LIKE @p1",
new ObjectParameter("p0", string.Format("%{0}%{1}%", searchTerm, tbl_Path.PathSeperator)),
new ObjectParameter("p1", string.Format("%{0}%", searchTerm)));
}