如何在C#中解析OData $ filter

use*_*844 6 c# regex odata-v4 asp.net-core-2.1

操作odata过滤器

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

表达式如下

“?$ filter =((名称eq'John'或名称eq'Grace Paul')和(部门eq'财务和会计'))”

由于有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
Run Code Online (Sandbox Code Playgroud)

我尝试过

  • ODataUriParser,但似乎不支持ASP.NET core 2.1 Web api。
  • 正则表达式 -使用此堆栈溢出问题,在我的情况下它似乎不起作用,因为我的第三个过滤器包含值&,因此正则表达式失败。
  • 方法中的ODataQueryOptions,但它将无法提取的原始文本提供给上述键值对。

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

有没有办法实现以上目标?