关于层次数据URL语法的ASP.NET WebAPI ODATA过滤器($ filter)

时间:2014-05-13 11:43:14

标签: c# asp.net-web-api asp.net-mvc-5 odata

我在ASP.NET MVC 5.0中创建了一个ODATA webAPI,我以下面的格式获取数据:

    <ArrayOfVMUser xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/FX_OSS.ViewModels">
    <VMUser>
    <address>addsadfsadfasdfsadfsadfsdf</address>
    <emailAddress>amitendra.srivastava@espire.com</emailAddress>
    <employeeID>110786</employeeID>
    <firstName>Amitendra</firstName>
    <flag i:nil="true"/>
    <handPhone>11111</handPhone>
    <isActive>true</isActive>
    <landlineNo>11111</landlineNo>
    <lastName>Srivastavasa</lastName>
    <loginID>amitendra.srivastava</loginID>
    <modifiedBy>Amitendra.srivastava</modifiedBy>
    <modifiedDate>2014-04-04T00:00:00</modifiedDate>
    <roleName i:nil="true"/>
    <userGroup i:nil="true"/>
    <userGroups>...</userGroups>
    <userRoles>
    <VMUserRole>
    <LoginID>amitendra.srivastava</LoginID>
    <ModifiedBy i:nil="true"/>
    <ModifiedDate i:nil="true"/>
    <RoleName>Installer</RoleName>
    </VMUserRole>
<VMUserRole>
    <LoginID>amitendra.srivastava</LoginID>
    <ModifiedBy i:nil="true"/>
    <ModifiedDate i:nil="true"/>
    <RoleName>Specialist</RoleName>
    </VMUserRole>
    </userRoles>
    <zoneCode>North</zoneCode>
    </VMUser>

如何编写URI过滤器以获取其rolename为“expert”的用户列表

这样的东西
  

/api/UsersSvc?$filter=userRoles.VMUserRole.RoleName eq'Profistist'

2 个答案:

答案 0 :(得分:1)

应该可以使用/代替.

/api/UserSvc?$filter=userRoles/VMUserRole/RoleName eq 'Specialist'

但请记住,这只适用于1-1或n-1关系。

答案 1 :(得分:1)

最后来自丹尼尔的帖子我意识到我需要使用Any |全部过滤集合。以下网址为我工作。谢谢Daniel !!

http://localhost:4444/api/userssvc?$filter=userRoles/any(c: c/RoleName eq 'specialist')