ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何在OData中按嵌套属性过滤?

2019-10-30 03:08:16  阅读:190  来源: 互联网

标签:asp-net-web-api odata json c


我将OData与Web API一起使用以返回以下JSON

[{"EmployeeID":1,"FirstName":"Nancy","LastName":"Davolio","Title":"Sales Representative","HireDate":"\/Date(704649600000)\/","Territories":[{"TerritoryID":"06897","TerritoryDescription":"Wilton"},{"TerritoryID":"19713","TerritoryDescription":"Neward"}]}

例如,如何过滤JSON以显示属于Wilton领土的项目?
我已经尝试过了,但是似乎没有用:

http://localhost:62559/Home/Read?$filter=Territories/TerritoryDescription eq Wilton

这是我使用存储库模式从数据库返回对象的代码:

[Queryable]
public IQueryable<EmployeeViewModel> Employees
{
  get
  {
    return context.Employees.Select(e => new EmployeeViewModel
    {
        EmployeeID = e.EmployeeID,
        FirstName = e.FirstName,
        LastName = e.LastName,
        HireDate = e.HireDate,
        Title = e.Title,
        Territories = e.Territories.Select(t => new TerritoryViewModel
        {
            TerritoryID = t.TerritoryID,
            TerritoryDescription = t.TerritoryDescription
        })
    });
  }
}

这是返回JSON对象的控制器:

public ActionResult Read()
{
    return Json(repository.Employees, JsonRequestBehavior.AllowGet);
}

解决方法:

在阅读与我相关的问题时遇到了以下答案:
Nested filter on Data Transfer Object using OData Wep Api

有趣的是,我以前在SO上搜索时从未遇到过这个问题.否则,我不必问这个问题.无论如何,这种方法对我有用:

http://localhost:62559/Home/Read?$filter=Territories/any(c:%20c/TerritoryDescription eq 'Wilton')

标签:asp-net-web-api,odata,json,c
来源: https://codeday.me/bug/20191030/1964729.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有