我正在使用CRM 2011 SDK来处理远程CRM 2011服务。我需要检索联系人总数,超过20000。
我尝试了一个简单的LINQ查询,例如。 Aggregate c In service.ContactSet Into Count()
(来自these examples,还有this suggestion和this suggestion),但每个人都年龄,因为下载的结果XML是整个记录集数据(即使它只是GUID,仍然是20000 GUID及其所有XML漏洞)。
我似乎无法找到如何简单地查询CRM 2011,因为它返回单个数字 - 实体中记录的总数。可以说是一个“标量查询”。这是怎么做到的?
答案 0 :(得分:6)
不幸的是,LINQ查询不支持聚合和分组。
文档说:
FetchXML支持QueryExpression plus的所有功能 聚合和分组。查询构建为XML语句。
因此,您唯一的选择是使用FetchXML,如下所示:
string fetchQuery = @"<fetch distinct='false' mapping='logical' aggregate='true'>
<entity name='entity name'>
<attribute name='attribute name' aggregate='count' alias='aliasName'/>
</entity>
</fetch>";
EntityCollection value = _serviceProxy.Execute(new FetchExpression(fetchQuery));
返回的结果如下:
<resultset morerecords="0"'>
<result>
<aliasName>20</aliasName>
</result>
</resultset>