2

我正在使用 CRM 2011 SDK 来处理远程 CRM 2011 服务。我需要检索联系人总数,超过 20000。

我尝试了一个简单的 LINQ 查询,例如。Aggregate c In service.ContactSet Into Count()(来自这些示例,还有这个建议这个建议)但是每个都需要很长时间,因为下载的生成的 XML 是一个完整的数据记录集(即使它只是 GUID,这仍然是 20000 个 GUID 和它们所有的 XML 绒毛)。

我似乎找不到如何简单地查询 CRM 2011,因为它返回一个数字- 实体中的记录总数。可以说是“标量查询”。这是怎么做到的?

4

1 回答 1

6

不幸的是,LINQ 查询不支持聚合和分组。

文档说:

FetchXML 支持 QueryExpression 的所有功能以及 聚合和分组。查询构建为 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>
于 2012-06-21T19:32:20.630 回答