/// <summary> /// 查询方法,对查询的列进行分组操作 /// </summary> /// <typeparam name="TModel"></typeparam> /// <param name="query"></param> /// <param name="propertyExpression">列名表达式</param> /// <returns>查询构造器,后面可接其它查询构造器方法</returns> public static SelectQuery <TModel> GroupBy <TModel>(this SelectQuery <TModel> query, Expression <Func <TModel, object> > propertyExpression) { string property = TranslateExtendtion.TranslateObject(propertyExpression, query.Provider); Regex regex = new Regex(@"[a-z|A-Z]+\w*\."); property = regex.Replace(property, @""); query.SqlBuilder.AddGroupBy(query.TableIndex, property); return(query); }
/// <summary> /// 选择返回列,用于返回指定名称属性集合数据源 /// </summary> /// <typeparam name="TModel"></typeparam> /// <param name="query"></param> /// <param name="newObject"></param> /// <returns>查询构造器,一般使用Select语句后应该执行查询</returns> public static SelectQuery <TModel> Select <TModel>(this SelectQuery <TModel> query, Expression <Func <TModel, object> > newObject) { var fields = TranslateExtendtion.TranslateObject(newObject, query.Provider) .Split(',') .Select(f => GetMetaFieldName <TModel>(query.TableIndex, f)).ToList(); query.SqlBuilder.ClearFields(); var keys = DbMetaDataManager.GetKeys(typeof(TModel)).Select(k => GetMetaFieldName <TModel>(query.TableIndex, k)); var keyAndFields = keys.ToList(); keyAndFields.AddRange(fields); keyAndFields.ForEach(f => query.SqlBuilder.AddField(f)); return(query); }