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 に答える