/// <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())); }
/// <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())); }
/// <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())); }