crm使用FetchXml聚合查询

crm使用FetchXml聚合查询

大家好,又见面了,我是全栈君。

/* 创建者:菜刀居士的博客
 * 创建日期:2014年07月08号
 */

namespace Net.CRM.FetchXml
{
    using System;
    using Microsoft.Xrm.Sdk;
    using Microsoft.Xrm.Sdk.Query;

    /// <summary>
    /// 使用FetchXml聚合查询
    /// </summary>
    public class FetchXmlDemo
    {
        /* 特别提示:FetchXML 包含使您可以计算总和、平均值、最小值、最大值和计数的分组和聚合函数。
         * 在查询中仅仅能指定一个 aggregate 属性,并且不能使用 distinct keyword。要创建的聚合的属性。
         * 请设置keywordaggregate到true,然后指定有效的实体名称。 属性名称,和别名 (变量名)。
         * 同一时候必须指定要运行的聚合的类型。 
         */

        /// <summary>
        /// 总和
        /// sql: select sum(new_value) as ‘new_value_sum’ from account
        /// </summary>
        public void Sum(IOrganizationService service)
        {
            string fetchXml = @”<fetch distinct=’false’ mapping=’logical’ aggregate=’true’>
                                    <entity name=’account’>
                                        <attribute name=’new_value’ alias=’new_value_sum’ aggregate=’sum’ />
                                    </entity>
                                </fetch>”;
            EntityCollection ec = service.RetrieveMultiple(new FetchExpression(fetchXml));
            if (ec != null && ec.Entities.Count > 0)
            {
               Entity en = ec.Entities[0];
               //获取结果
               decimal value = ((Money)((AliasedValue)en[“new_value_sum”]).Value).Value;
            }
        }

        /// <summary>
        /// 平均值
        /// sql: select avg(new_value) as ‘new_value_avg’ from account
        /// 当crm计算数据的平均值时,不考虑 Null 值。

可是。会使用零 (0)。
        /// </summary>
        public void Avg(IOrganizationService service)
        {
            string fetchXml = @”<fetch distinct=’false’ mapping=’logical’ aggregate=’true’>
                                    <entity name=’account’>
                                        <attribute name=’new_value’ alias=’new_value_avg’ aggregate=’avg’ />
                                    </entity>
                                </fetch>”;
            EntityCollection ec = service.RetrieveMultiple(new FetchExpression(fetchXml));
            if (ec != null && ec.Entities.Count > 0)
            {
                Entity en = ec.Entities[0];
                //获取结果
                decimal value = ((Money)((AliasedValue)en[“new_value_avg”]).Value).Value;
            }
        }

        /// <summary>
        /// 计算有多少个记录
        /// sql: select count(*) from account
        /// </summary>
        public void Count(IOrganizationService service)
        {
            string fetchXml = @”<fetch distinct=’false’ mapping=’logical’ aggregate=’true’>
                                    <entity name=’account’>
                                        <attribute name=’new_name’ alias=’new_name_count’ aggregate=’count’ />
                                    </entity>
                                </fetch>”;
            EntityCollection ec = service.RetrieveMultiple(new FetchExpression(fetchXml));
            if (ec != null && ec.Entities.Count > 0)
            {
                Entity en = ec.Entities[0];
                //获取结果
                int value = (Int32)((AliasedValue)en[“new_name_count”]).Value;
            }
        }

        /// <summary>
        /// 计算有多少个记录(针对指定的列名)
        /// sql: select count(distinct new_name) from account
        /// </summary>
        public void CountColumn(IOrganizationService service)
        {
            string fetchXml = @”<fetch distinct=’false’ mapping=’logical’ aggregate=’true’>
                                    <entity name=’account’>
                                        <attribute name=’new_name’ alias=’new_name_count’ aggregate=’countcolumn’ distinct=’true’ />
                                    </entity>
                                </fetch>”;
            EntityCollection ec = service.RetrieveMultiple(new FetchExpression(fetchXml));
            if (ec != null && ec.Entities.Count > 0)
            {
                Entity en = ec.Entities[0];
                //获取结果
                int value = (Int32)((AliasedValue)en[“new_name_count”]).Value;
            }
        }

        /// <summary>
        /// 最大值
        /// sql: select max(new_value) as ‘new_value_max’ from account
        /// 当crm计算数据的最大值时,不考虑 Null 值。可是,会使用零 (0)。
        /// </summary>
        public void Max(IOrganizationService service)
        {
            string fetchXml = @”<fetch distinct=’false’ mapping=’logical’ aggregate=’true’>
                                    <entity name=’account’>
                                        <attribute name=’new_value’ alias=’new_value_max’ aggregate=’max’ />
                                    </entity>
                                </fetch>”;
            EntityCollection ec = service.RetrieveMultiple(new FetchExpression(fetchXml));
            if (ec != null && ec.Entities.Count > 0)
            {
                Entity en = ec.Entities[0];
                //获取结果
                decimal value = ((Money)((AliasedValue)en[“new_value_max”]).Value).Value;
            }
        }

        /// <summary>
        /// 最小值
        /// sql: select min(new_value) as ‘new_value_min’ from account
        /// 当crm计算数据的最小值时,不考虑 Null 值。可是。会使用零 (0)。
        /// </summary>
        public void Min(IOrganizationService service)
        {
            string fetchXml = @”<fetch distinct=’false’ mapping=’logical’ aggregate=’true’>
                                    <entity name=’account’>
                                        <attribute name=’new_value’ alias=’new_value_min’ aggregate=’min’ />
                                    </entity>
                                </fetch>”;
            EntityCollection ec = service.RetrieveMultiple(new FetchExpression(fetchXml));
            if (ec != null && ec.Entities.Count > 0)
            {
                Entity en = ec.Entities[0];
                //获取结果
                decimal value = ((Money)((AliasedValue)en[“new_value_min”]).Value).Value;
            }
        }

        /// <summary>
        /// 多个聚合
        /// sql: select count(*) as ‘new_value_count’,max(new_value) as ‘new_value_max’,
        ///       min(new_value) as ‘new_value_min’ from account
        /// </summary>
        public void CountAndMaxAndMin(IOrganizationService service)
        {
            string fetchXml = @”<fetch distinct=’false’ mapping=’logical’ aggregate=’true’>
                                    <entity name=’account’>
                                        <attribute name=’new_value’ alias=’new_value_count’ aggregate=’count’ />
                                        <attribute name=’new_value’ alias=’new_value_max’ aggregate=’max’ />
                                        <attribute name=’new_value’ alias=’new_value_min’ aggregate=’min’ />
                                    </entity>
                                </fetch>”;
            EntityCollection ec = service.RetrieveMultiple(new FetchExpression(fetchXml));
            if (ec != null && ec.Entities.Count > 0)
            {
                Entity en = ec.Entities[0];
                //获取结果
                int count_value = (Int32)((AliasedValue)en[“new_value_count”]).Value;
                decimal max_value = ((Money)((AliasedValue)en[“new_value_max”]).Value).Value;
                decimal min_value = ((Money)((AliasedValue)en[“new_value_min”]).Value).Value;
            }
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116226.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • linux时间戳转换成时间指令_shell脚本获取时间戳

    linux时间戳转换成时间指令_shell脚本获取时间戳1、时间戳转换为正常显示的时间格式

  • C#没有.sln文件怎么办?

    C#没有.sln文件怎么办?如果你的C#文件夹下没有.sln文件,你可以用VisualStudio软件,文件->打开->项目/解决方案,在指定的文件夹下找到.csproj文件,在你关闭时,会提示你保存成.sln文件,以后就可以直接打开了。

  • SwipeRefreshLayout的基本使用「建议收藏」

    SwipeRefreshLayout的基本使用「建议收藏」SwipeRefreshLayout的基本使用简介SwipRefreshLayout是谷歌前一段时间推出的一款下拉刷新控件。常用方法方法解释setColorSchemeResources(int…colorReslds)设置下拉进度条的颜色主题,参数可变,并且是资源id,最多设置四种不同的颜色。setProgressBackgroundSchemeResource(intcoloRes)设置下拉进度条的背景颜色,默认白色。isRefreshing()判断当前的

  • SqlConnection.ConnectionString 属性

    SqlConnection.ConnectionString 属性ConnectionString类似于OLEDB连接字符串,但并不相同。与OLEDB或ADO不同,如果“PersistSecurityInfo”值设置为false(默认值),则返回的连接字符串与用户设置的ConnectionString相同但去除了安全信息。除非将“PersistSecurityInfo”设置为true,否则,SQLServer.NETF

  • 什么是5g网络切片_5g网络切片架构三层

    什么是5g网络切片_5g网络切片架构三层2020年,相信很多小伙伴已经用上了5G手机,感受到了5G的网络带来的飞一般的感觉。不过,可能也有小伙伴会发出疑问:我买了5G手机,也体验了5G,好是好,但似乎也没有外界吹得那么神乎啊。不是说好的技术革命吗?就只是网速变快了而已?其实这背后主要有两个原因,一个是目前5G切实落地的应用还比较少,第二个就是目前5G的技术确实也还在演进过程中。我们回想一下5G的三大核心应用场景:增强型移动宽带(eMBB):更大的网络吞吐量、峰值速率和低延时;海量机器通信(mMTC):巨大的连

  • shell批量新建文件

    shell批量新建文件shell批量新建文件,文件名依次为a1,a2……a100#!/bin/bashPath=/home/yifan/maying/shell/case2[-d$Path]||mkdir$Pathint=1while(($int&lt;=100))dofilename="a"$int""touch$Path/$filenamelet"int++"do…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号