internal static string BuildSql(IContext context, string oldSql, Segment segment) { var data1 = ParamsUtil.GetParamData(context, segment.Args.ElementAt(0)).Data; var data2 = ParamsUtil.GetParamData(context, segment.Args.ElementAt(1)).Data; string start = ValueGetter.Builder(data1, false); string size = ValueGetter.Builder(data2, false); return(string.Concat(string.Intern("limit "), start, SqlKeyWorld.Split3, size)); }
public string GetRealText(string str, IContext context) { if (string.IsNullOrEmpty(str)) { return(string.Empty); } var paramInfos = ParamsUtil.GetParams(context, str); return(ParamsUtil.ApplyParams(str, paramInfos.Item1, paramInfos.Item2)); }
internal static string BuildSql(IContext context, string oldSql, Segment segment) { var data = ParamsUtil.GetParamData(context, segment.Args.ElementAt(0)).Data; var isArray = ReflectUtil.ReflectUtil.IsArray(data); string inParams = ValueGetter.Builder(data, isArray); if (!string.IsNullOrEmpty(inParams)) { return(string.Concat(segment.Args.ElementAt(1), SqlKeyWorld.WhiteSpace, SqlKeyWorld.In, "(", inParams, ")")); } return(SegmentUtil.GetContent(oldSql, segment)); }
public static Delegate GetDelegate(IContext context, string eval, object data) { var usedParams = ParamsUtil.GetParams(context, eval).Item1.ParamsToDictionary(true); var count = usedParams.Count; if (count > 0) { for (var i = count - 1; i >= 0; i--) { var item = usedParams.ElementAt(i); if (!item.Key.Contains(SqlKeyWorld.Spot)) { continue; } usedParams.Remove(item.Key); var newKey = item.Key.Replace(SqlKeyWorld.Spot, SqlKeyWorld.Underline); eval = eval.Replace(item.Key, newKey); usedParams.Add(newKey, item.Value); } } Delegate @delegate; if (data != null) { var paramTypes = new Dictionary <string, Type>(); paramTypes.Add(Data, data.GetType()); @delegate = LambdaEngine.ExpressionBuilder.Build(eval, usedParams, paramTypes); } else { @delegate = LambdaEngine.ExpressionBuilder.Build(eval, usedParams); } return(@delegate); }
public ParamInfo GetParamInfo(IContext context, string dataStr) { var key = dataStr.Substring(1, dataStr.Length - 1); var keyArray = dataStr.Split('_'); var realKey = keyArray[1]; var data = SqlEnginerConfig.GetGlobalDatas(realKey); if (data == null) { throw new ArgumentNullException(string.Concat("不存在", realKey, "全局对象!")); } var queryParams = context.Params; object outData; if (!queryParams.TryGetValue(key, out outData)) { var convertData = ParamsUtil.CovnertParam(data, queryParams, realKey); if (convertData != data) { queryParams.Add(key, convertData); data = convertData; } } else { data = outData; } return(new ParamInfo { Type = ParamType.Global, Name = key, Data = data }); }
internal static string BuildSql(IContext context, string oldSql, Segment segment) { var data = ParamsUtil.GetParamData(context, segment.Args.ElementAt(0)).Data; IEnumerable <object> datas = data as IEnumerable <object>; if (datas == null) { datas = data.ToString().Split(SqlKeyWorld.Split3); } var content = SegmentUtil.GetContent(oldSql, segment); content = SegmentUtil.BuildContent(context, oldSql, content, segment); var paramStrs = content.Trim().Split(SqlKeyWorld.Split4); var lenData = datas.Count(); var template = paramStrs[0]; var split = string.Empty; if (paramStrs.Length > 1) { split = paramStrs[1]; } StringBuilder sb = new StringBuilder(); for (var i = 0; i < lenData; i++) { sb.Append(string.Format(template, datas.ElementAt(i))); if (i != lenData - 1) { sb.Append(split); } } return(sb.ToString()); }