2014-10-16 145 views
1

我想根据名为“listcontact_association”的项目关系的一个方面来过滤集合,它表示联系人和列表之间的N:N关系。基于关系属性的odata过滤

我可以通过获取检索一整套确定:

/ContactSet?$select=listcontact_association,FirstName,LastName,EMailAddress1&$expand=listcontact_association 

这给了我:

enter image description here

但我想有是只能够得到那些联系人属于基于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新手,无法弄清楚如何过滤我的数据,所以任何帮助表示赞赏。

回答

2

这是因为listcontact_association是一个集合,在这种情况下,您可以使用根据您的需要LAMDA表达式(只列出了这里的筛选子句):任何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))