OData的$过滤substringof应用到字符串列表(OData $filter substri

2019-09-16 12:46发布

我有一个公开的一个ASP.NET Web API控制器IQueryable(Of String) -这是描述的列表。 这些字段可以是几万的订单,所以我用$top$skip只得到它的一大块-工作正常。

现在我想筛选这些结果,通过的OData substringof('mydesc',Property)过滤器。 正如你所看到的,它需要对我来说,在属性名要筛选通过。 然而,因为我返回一个字符串列表,我实际上没有任何属性筛选依据。

这将导致服务器一样返回错误No property or field 'tostring' exists in type 'String' -当一个名为$filter=substringof('asd',tostring)

如果我改变调用$filter=substringof('asd','')不会引发任何错误,但没有任何结果。

我的问题是,我可以以某种方式格式化$filter运营商找到我的字符串列表内子,头也不回的属性/字段,还是我将不得不声明一个类有一个属性,只需启用过滤?

Answer 1:

自从上次我回答这样的事情发生了变化。 V3的OData对查询使用'$它的基本概念,收集支持。 Asp.net的Web API支持此语法也是如此。 例如,在你的控制器,你可以返回IQueryable<string>并发送类似的请求

$滤波器=串( 'mydesc',$它)或

$滤波器=长度($它)GE 5

等你也可以公开其他像元IQueryable的等等的集合



Answer 2:

不幸的是声明一类具有一个属性似乎是我能想到的唯一解决方案。 OData $filter不具备的东西,像任何支持this参数在C#



Answer 3:

另一个不那么明显的方法是,以暴露计算连结值表示列表中,substringof然后可以用来查询该列表作为单个属性值



文章来源: OData $filter substringof applied to a list of strings