Web API Odata - 如何在 ComplexType 上查询

本文关键字:ComplexType 查询 API Odata Web | 更新日期: 2023-09-27 18:30:26

我有一个支持 OData 的 ASP.NET MVC 4 Web-API 服务。

该服务的主要组成部分是

模型:

namespace OdataServiceTest.Models
{
    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public DateTime BirthDate { get; set; }
        public EnumType Gender { get; set; } // Complex Type
    }
    public class EnumType
    {
        [XmlAttribute]
        public int Key { get; set; }
        [XmlText]
        public string Value { get; set; }
    }
}

和控制器:

public class PersonsController : ApiController
    {
        // GET api/Persons
        [Queryable]
        public IQueryable<Person> Get()
        {
            Person[] person = new Person[] {
            new Person() { Name="Ronen", Age=23, Gender=new EnumType() { Key=1,Value="Male" } }
            };
            return person.AsQueryable();
        }
}

空查询返回以下结果

<ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Person>
<Name>Ronen</Name>
<Age>23</Age>
<BirthDate>0001-01-01T00:00:00</BirthDate>
<Gender Key="1">Male</Gender>
</Person>
</ArrayOfPerson>

我希望对性别字段(一种复杂类型)的查询如下所示:

http://localhost:7116/api/Persons?$filter=Gender eq 1

如何完成此任务?

Web API Odata - 如何在 ComplexType 上查询

您应该尝试此查询。

http://localhost:7116/api/Persons?$filter=Gender/Key eq 1