2

我有一个支持 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

我如何完成这项任务?

4

1 回答 1

1

您应该尝试使用此查询。

http://localhost:7116/api/Persons?$filter=Gender/Key eq 1
于 2013-09-05T18:48:28.997 回答