我正在尝试根据名为" listcontact_association"的项目关系的一个方面过滤集合。它表示联系人和列表之间的N:N关系。
我可以通过以下方式检索整套设置:
/ContactSet?$select=listcontact_association,FirstName,LastName,EMailAddress1&$expand=listcontact_association
这给了我:
但我希望能够只根据guid获取属于特定列表的那些联系人:
ContactSet?$select=listcontact_association,FirstName,LastName,EMailAddress1&$expand=listcontact_association,FirstName,LastName,EMailAddress1&$filter=listcontact_association/ListId %20eq%20(guid%2787F2A0AF-A142-E411-93FA-000C29482C88%27)
这告诉我:
No property 'ListId' exists in type 'System.Collections.Generic.IEnumerable`1[[Microsoft.Xrm.Sdk.Entity, Microsoft.Xrm.Sdk, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]' at position 24.
我觉得有意义,因为可以有很多列表关联。
我是odata新手,无法弄清楚如何过滤我的数据,所以我们非常感谢您的帮助。
答案 0 :(得分:2)
这是因为listcontact_association是一个集合,在这种情况下,你可以根据你的要求使用lamda表达式(这里只列出filter子句):
按任何listid过滤条件。
$filter=listcontact_association/any(a:a/ListId%20eq%20(guid%2787F2A0AF-A142-E411-93FA-000C29482C88%27))
按所有listid过滤匹配条件
$filter=listcontact_association/all(a:a/ListId%20eq%20(guid%2787F2A0AF-A142-E411-93FA-000C29482C88%27))