使用带有包含的Odata查询时出错

时间:2016-04-17 14:12:56

标签: asp.net-web-api odata

这是控制器代码

[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;被发现了。

2 个答案:

答案 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