Angularjs $filter=contains(json属性,字符串)不';t在OData v7.4.1中工作

Angularjs $filter=contains(json属性,字符串)不';t在OData v7.4.1中工作,angularjs,filter,kendo-ui,kendo-grid,odata,Angularjs,Filter,Kendo Ui,Kendo Grid,Odata,我想在OData中过滤json列,但我不能 我的控制器方法 public IActionResult Find(ODataQueryOptions<Entity> queryOptions) { var items = entityRepository.Find(); var queryResults = (IQueryable<Entity>)queryOptions.ApplyTo(items, new ODataQuery

我想在OData中过滤json列,但我不能

我的控制器方法

  public IActionResult Find(ODataQueryOptions<Entity> queryOptions)
    {
        var items = entityRepository.Find();
        var queryResults = (IQueryable<Entity>)queryOptions.ApplyTo(items, new ODataQuerySettings() { EnsureStableOrdering = false });
        return Ok(new PageResult<Entity>(queryResults, Request.ODataFeature().NextLink, Request.ODataFeature().TotalCount));
    }
数据库列值

{"label1": {"name": "Test Manager", "description": null}, "label2": {"name": "", "description": null}}
请求

http://localhost:5004/api/entity/find?%24format=json&%24top=10&%24filter=contains(tolower(languages%2Flabel1%2Fname)%2C%27BT%27)&%24count=true

$format: json
$top: 10
$filter: contains(tolower(languages/label1/name), 'BT')
$count: true
default: false
deleted: false
id: 9
languages: "{"label1": {"name": "Test Manager", "description": null}, "label2": {"name": "", 
"description": null}}"
预期结果

http://localhost:5004/api/entity/find?%24format=json&%24top=10&%24filter=contains(tolower(languages%2Flabel1%2Fname)%2C%27BT%27)&%24count=true

$format: json
$top: 10
$filter: contains(tolower(languages/label1/name), 'BT')
$count: true
default: false
deleted: false
id: 9
languages: "{"label1": {"name": "Test Manager", "description": null}, "label2": {"name": "", 
"description": null}}"
实际结果 Microsoft.OData.ODataException:在类型“Edm.String”上找不到名为“label1”的属性。 位于Microsoft.OData.UriParser.InnerPathTokenBinder.BindInnerPathSegment(InnerPathTokenSegmentToken) 位于Microsoft.OData.UriParser.MetadataBinder.BindInnerPathSegment(InnerPathToken令牌) 位于Microsoft.OData.UriParser.MetadataBinder.Bind(QueryToken令牌) 位于Microsoft.OData.UriParser.EndPathBinder.DetermineParentNode(EndPathToken segmentToken) 位于Microsoft.OData.UriParser.EndPathBinder.BindEndPath(EndPathToken EndPathToken) 位于Microsoft.OData.UriParser.MetadataBinder.BindEndPath(EndPathToken EndPathToken) 位于Microsoft.OData.UriParser.MetadataBinder.Bind(QueryToken令牌) 位于Microsoft.OData.UriParser.MetadataBinder.BindFunctionParameter(FunctionParameterToken令牌) 位于Microsoft.OData.UriParser.MetadataBinder.Bind(QueryToken令牌) 位于Microsoft.OData.UriParser.FunctionCallBinder.b_uu7_0(FunctionParameterToken ar) 在System.Linq.Enumerable.SelectEnumerableIterator2.MoveNext()在System.Collections.Generic.List1..ctor(IEnumerable1集合)在Microsoft.OData.UriParser.FunctionCallBinder.BindFunctionCall(FunctionCallToken FunctionCallToken)在Microsoft.OData.UriParser.MetadataBinder.BindFunctionCallToken调用(FunctionCallToken FunctionCallToken FunctionCallToken)位于Microsoft.OData.UriParser.MetadataBinder.Bind(QueryToken token)处的Microsoft.OData.UriParser.MetadataBinder.BindFunctionParameterToken(FunctionParameterToken token)处的Microsoft.OData.UriParser.FunctionCallBinder.b_u7_0(FunctionParameterToken ar)处的Microsoft.OData.UriParser.MetadataBinder.Bind(QueryToken token)在System.Linq.Enumerable.SelectEnumerableInterator2.MoveNext()中 位于System.Collections.Generic.List1..ctor(IEnumerable1集合) 位于Microsoft.OData.UriParser.FunctionCallBinder.BindFunctionCall(FunctionCallToken FunctionCallToken) 位于Microsoft.OData.UriParser.MetadataBinder.BindFunctionCall(FunctionCallToken FunctionCallToken) 位于Microsoft.OData.UriParser.MetadataBinder.Bind(QueryToken令牌) 位于Microsoft.OData.UriParser.BinaryOperatorBinder.GetOperatorFromToken(BinaryOperatorKind operatorKind,QueryToken QueryToken) 位于Microsoft.OData.UriParser.BinaryOperatorBinder.BindBaryOperator(BinaryOperatorToken BinaryOperatorToken) 位于Microsoft.OData.UriParser.MetadataBinder.BindBinaryOperator(BinaryOperatorToken BinaryOperatorToken) 位于Microsoft.OData.UriParser.MetadataBinder.Bind(QueryToken令牌) 位于Microsoft.OData.UriParser.BinaryOperatorBinder.GetOperatorFromToken(BinaryOperatorKind operatorKind,QueryToken QueryToken) 位于Microsoft.OData.UriParser.BinaryOperatorBinder.BindBaryOperator(BinaryOperatorToken BinaryOperatorToken) 位于Microsoft.OData.UriParser.MetadataBinder.BindBinaryOperator(BinaryOperatorToken BinaryOperatorToken) 位于Microsoft.OData.UriParser.MetadataBinder.Bind(QueryToken令牌) 位于Microsoft.OData.UriParser.FilterBinder.BindFilter(QueryToken筛选器) 在Microsoft.OData.UriParser.ODataQueryOptionParser.ParseFilterImplementation(字符串过滤器、ODataUriParserConfiguration配置、ODataPathInfo ODataPathInfo) 在Microsoft.OData.UriParser.ODataQueryOptionParser.ParseFilter()中 在Microsoft.AspNet.OData.Query.FilterQueryOption.get_FilterClause()中 在Microsoft.AspNet.OData.Query.FilterQueryOption.ApplyTo(IQueryable查询,ODataQuerySettings查询设置) 在Microsoft.AspNet.OData.Query.ODataQueryOptions.ApplyTo(IQueryable查询,ODataQuerySettings查询设置) 在Microsoft.AspNet.OData.Query.ODataQueryOptions`1.ApplyTo(IQueryable查询,ODataQuerySettings querySettings)