C# 在CRM dynamics SDK.Query.QueryExpression中使用选择计数

C# 在CRM dynamics SDK.Query.QueryExpression中使用选择计数,c#,sql,dynamics-crm,C#,Sql,Dynamics Crm,使用c#,我需要使用适用于Microsoft Dynamics 2015的SDK.query.QueryExpression库构建一个查询。我不知道如何排序和计算发生的次数 我想计算每个产品在所有销售机会中使用的次数 sql查询本身相当简单: SELECT b.Name, count(a.ProductId) as 'accurances' FROM [ProkonCRM_MSCRM].[dbo].[OpportunityProductBase] a, [ProkonCRM_MSCRM

使用c#,我需要使用适用于Microsoft Dynamics 2015的SDK.query.QueryExpression库构建一个查询。我不知道如何排序和计算发生的次数

我想计算每个产品在所有销售机会中使用的次数

sql查询本身相当简单:

SELECT b.Name, count(a.ProductId) as 'accurances'
FROM [ProkonCRM_MSCRM].[dbo].[OpportunityProductBase] a,
     [ProkonCRM_MSCRM].[dbo].[ProductBase] b
where a.ProductId = b.ProductId
group by b.name 

据我所知,QueryExpressions不支持聚合函数。 为此,您可能需要查看FetchXML,因为这里支持聚合函数。 以下是一些使用FetchXML实现所需功能的示例:

FetchXML中的示例(未测试,您的实体名称可能不同,我假设它是一个N:N关系)


我假设您拥有CRM 2015的内部实施。 基于该假设,您可以选择直接查询CRM数据库,并使用C#(例如,使用Microsoft.Data.SQL库)执行SQL查询

查询过滤器视图非常重要,因为这是直接查询CRM数据库的推荐方法

过滤器视图参考:

<fetch distinct='false' mapping='logical' aggregate='true'> 
    <entity name='product'> 
       <attribute name='name' alias='productName' groupby='true'/> 
       <link-entity name='opportunityproduct' from='opportunityid' to='opportunityid'>
           <attribute name='productid' alias='occurences' aggregate='count' />
       </link-entity> 
    </entity> 
</fetch>