protected QueryConditional(Type[] dbtypes, Expression expr, IDataProvider dataProvider) { LoadObjects(dbtypes); DataProvider = dataProvider; string conditional = TranslateExtendtion.TranslateConditional(expr, DataProvider); this.strConditional = new StringBuilder(conditional); }
public IOperatorWhere <TModel> Where(Expression <Func <TModel, bool> > whereExp) { string whereSQL = TranslateExtendtion.TranslateConditional(whereExp, Provider); Regex regex = new Regex(@"\w+\."); whereSQL = regex.Replace(whereSQL, @""); SQL += string.Format(" And {0}", whereSQL); return(this); }
/// <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> /// 查询方法,条件查询Or操作 /// </summary> /// <typeparam name="TModel"></typeparam> /// <param name="query"></param> /// <param name="whereExpression">条件表达式</param> /// <returns>查询构造器,后面可接其它查询构造器方法</returns> public static SelectQuery <TModel> Or <TModel>(this SelectQuery <TModel> query, Expression <Func <TModel, bool> > whereExpression) { string whereSQL = TranslateExtendtion.TranslateConditional(whereExpression, query.Provider); Regex regex = new Regex(@"[a-z|A-Z]+\w*\."); whereSQL = regex.Replace(whereSQL, @"T1."); query.WhereCreater.Append(" OR ") .Append(whereSQL); return(query); }
private QueryConditional AndOr(Expression expr, string andor) { string conditional = TranslateExtendtion.TranslateConditional(expr, DataProvider); this.strConditional .Append(" ") .Append(andor) .Append(" ") .Append(conditional); return(this); }
/// <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); }