如何在 C# 中解析 OData $filter

操作 odata 过滤器

如何在后端操作过滤器并想要过滤器查询参数的键值对?

表达式如下

"?$filter =((Name eq 'John' or Name eq 'Grace Paul') and (Department eq 'Finance and Accounting'))"

由于连接了 2 个过滤器,我如何获得类似的值

Filter 1:

    Key: Name

    Operator: eq

    Value: Name


Operator: or


Filter 2:

    Key: Name

    Operator: eq

    Value: Grace Paul


Operator: and


Filter 3:

    Key: Department

    Operator: eq

    Value: Finance and Accounting

我试过

  • ODataUriParser,但它似乎不支持 ASP.NET core 2.1 web api。

  • 正则表达式- 使用这个堆栈溢出问题,在我的情况下它似乎不起作用,因为我的第三个过滤器包含值 & 所以正则表达式失败。

  • 方法中的ODataQueryOptions,但它提供了无法提取的原始文本,如提到的键值对。

我正在使用ASP.NET Core 2.1 Web API 与 OData v4集成

有没有办法实现上面的内容?


哈士奇WWW
浏览 323回答 2
2回答

潇湘沐

我知道这不是解决方案,而是与您分享以防万一以后对您有所帮助。这是为了匹配 ':' 右侧的所有值/(?<=:&nbsp;)[\w&nbsp;]+/gm
打开App,查看更多内容
随时随地看视频慕课网APP