只是想知道当前的REST端点(2013)是否支持基于子实体的Any或All过滤:
http://localhost/xrmservices/2011/OrganizationData.svc/AccountSet?$select=Name&$expand=lead_parent_account&$filter=lead_parent_account/any(x:x.City eq '')
回来: 类型'System.Collections.Generic.IEnumerable`1 [[Microsoft.Xrm.Sdk.Entity,Microsoft.Xrm.Sdk,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35]]'中不存在属性'any'在第20位。
答案 0 :(得分:3)
OData端点仅返回实体,您无法执行布尔查询,例如IEnumerable<T>.Any()
/ .All()
1 。
所有内容都需要从数据开始:类似于您的查询以获取相关实体可能如下所示:
/AccountSet?$select=Name&$expand=lead_parent_account&$filter=lead_parent_account/City eq ''
如果您获得非空的结果集,则等效的.Any()
为true
。
检查.All()
是令人讨厌的:我能想到的最接近的方法是检查查询是否返回了AccountSet
的所有记录(如果你有数千条记录需要一段时间,还要记得结果的上限为每个查询5000个上限,如果有更多,则上传。
( 1 :当然,如果在代码中执行QueryExpression
,结果可以随意LINQ-ed,因为您不再依赖于有限的LINQtoCRM查询提供程序,但它在这里不太相关)