这是控制器代码
[EnableQuery]
public IQueryable<Product> Get()
{
var productRepository = new ProductRepository();
return productRepository.Retrieve().AsQueryable();
}
这是Retrieve()方法
internal List<Product> Retrieve()
{
var filePath = HostingEnvironment.MapPath(@"~/App_Data/product.json");
var json = System.IO.File.ReadAllText(filePath);
var products = JsonConvert.DeserializeObject<List<Product>>(json);
return products;
}
和产品类
public class Product
{
public string Description { get; set; }
public decimal Price { get; set; }
public string ProductCode { get; set; }
public int ProductId { get; set; }
public string ProductName { get; set; }
public DateTime ReleaseDate { get; set; }
}
其他过滤器,如$ filter = Price + gt + 6或$ top = 4和$ skip = 1正常工作。 WebApi.OData包版本= 5.7.0
错误: &#34; URI中指定的查询无效。一个名为&#39;的未知函数包含&#39;被发现了。
答案 0 :(得分:2)
substringof()
是 V3 功能,而contains()
是 V4 功能。
尝试contains
:
$filter=contains(Name,'value')
答案 1 :(得分:1)
您可能正在为OData版本3使用OData库包,但contains
是版本4功能。您可以使用版本3中定义的substringof
函数进行查询,也可以切换为package that supports OData version 4。