/// <summary> /// 生成统计表的类型集合 /// </summary> /// <typeparam name="K">生成类型</typeparam> /// <returns>类型集合</returns> public List <K> GetObjectList <K>() where K : class, new() { AggregateTableMapping aggregateMapping = AggregateTableMapping.GetAggregateMapping(typeof(K)); List <K> list = _context.QueryDynamicAggregateList(_enetityMapping, aggregateMapping, _dataFieldInfoDictionary, _aggregateFunctionDictionary, _query, _having, _order, _level) as List <K>; return(list); }
/// <summary> /// 动态统计数据到数据集合中 /// </summary> /// <param name="mapping">数据映射</param> /// <param name="amapping">统计结果类型</param> /// <param name="dataFieldInfoDictionary">统计字段信息</param> /// <param name="aggregateFunctionDictionary">统计方法信息</param> /// <param name="query">查询表达式</param> /// <param name="having">统计查询表达式</param> /// <param name="order">排序表达式</param> /// <param name="level">安全级别</param> /// <returns>数据集合</returns> internal IList QueryDynamicAggregateList(DataEntityMapping mapping, AggregateTableMapping amapping, Dictionary <string, DataFieldInfo> dataFieldInfoDictionary, Dictionary <string, AggregateFunction> aggregateFunctionDictionary, QueryExpression query, AggregateHavingExpression having, OrderExpression order, SafeLevel level) { if (amapping.RelateType != null && amapping.RelateType != mapping.ObjectType) { throw new LightDataException(string.Format(RE.AggregateTypeIsNotSpecifyType, amapping.RelateType.FullName)); } using (IDbCommand command = _dataBase.Factory.CreateDynamicAggregateCommand(mapping, dataFieldInfoDictionary, aggregateFunctionDictionary, query, having, order)) { IList items = CreateList(amapping.ObjectType); IEnumerable ie = QueryDataReader(amapping, command, null, level); foreach (object obj in ie) { items.Add(obj); } return(items); } }