Beispiel #1
0
        /// <summary>
        /// Extendable method: 查询该对象化数据源中总共多少个元素
        /// </summary>
        /// <typeparam name="TEntity">对象类型</typeparam>
        /// <param name="source">数据源</param>
        /// <returns>元素个数</returns>
        public static long LongCount <TEntity>(this IDbQuery <TEntity> source)
            where TEntity : class
        {
            //检查数据源是否为空
            Check.ArgumentNull(source, nameof(source));
            //创建DbScaler
            IDbScalar dbScaler = source.Factory.CreateScalar(source, "COUNT");

            //执行统计查询获取元素数量
            return(TypeHelper.ConvertTo <long>(dbScaler.Execute()));
        }
Beispiel #2
0
        /// <summary>
        /// Extendable method: 统计数据源中所有元素某属性的最小值
        /// </summary>
        /// <typeparam name="TEntity">实体类型</typeparam>
        /// <typeparam name="TProperty">属性类型</typeparam>
        /// <param name="source">数据源</param>
        /// <param name="selector">指定元素某属性的表达式</param>
        /// <returns>数据源中所有元素某属性的最小值</returns>
        public static TProperty Min <TEntity, TProperty>(this IDbQuery <TEntity> source, Expression <Func <TEntity, TProperty> > selector)
            where TEntity : class
        {
            //非空检查
            Check.ArgumentNull(source, nameof(source));
            Check.ArgumentNull(selector, nameof(selector));
            //创建DbScaler
            IDbScalar dbScaler = source.Factory.CreateScalar(source, "MIN", selector);

            //执行统计查询获取元素属性最大值
            return(TypeHelper.ConvertTo <TProperty>(dbScaler.Execute()));
        }
Beispiel #3
0
        /// <summary>
        /// Internal Extendable method: 执行对数据源中所有元素的某属性的统计,获取统计值
        /// </summary>
        /// <typeparam name="TEntity">实体类型</typeparam>
        /// <typeparam name="TProperty">属性类型</typeparam>
        /// <param name="source">数据源</param>
        /// <param name="methodName">源方法名</param>
        /// <param name="selector">指定实体某属性表达式</param>
        /// <returns>数据源中所有元素某属性的统计值</returns>
        private static TProperty Function <TEntity, TProperty>(this IDbQuery <TEntity> source, string methodName, Expression <Func <TEntity, TProperty> > selector)
            where TEntity : class
            where TProperty : struct
        {
            //非空检查
            Check.ArgumentNull(source, nameof(source));
            Check.ArgumentNull(selector, nameof(selector));
            IDbScalar dbScaler = source.Factory.CreateScalar(source, methodName.ToUpper(), selector);

            //执行获取第一行第一列的统计值
            return(TypeHelper.ConvertTo <TProperty>(dbScaler.Execute()));
        }