using System.Collections.Generic; using System.Linq; using System.Text; namespace SqlSugar { public class ExpressionResult { public bool IsLockCurrentParameter { get; set; } public bool IsUpper { get; set; } private ExpressionParameter _CurrentParameter; public ExpressionParameter CurrentParameter { get { return this._CurrentParameter; } set { Check.Exception(value != null && IsLockCurrentParameter, "CurrentParameter is locked."); this._CurrentParameter = value; this.IsLockCurrentParameter = false; } } #region constructor private ExpressionResult() { } public ExpressionResult(ResolveExpressType resolveExpressType) { this._ResolveExpressType = resolveExpressType; } #endregion #region Fields private ResolveExpressType _ResolveExpressType; private StringBuilder _Result; #endregion #region properties private StringBuilder Result { get { if (_Result == null) _Result = new StringBuilder(); return _Result; } set { _Result = value; } } public bool LastCharIsSpace{ get { if (_Result == null|| _Result.Length==0) return true; return _Result.ToString().Last() == UtilConstants.SpaceChar; } } #endregion public string GetString() { if (_Result == null) return null; if (IsUpper) return _Result.ToString().ToUpper().TrimEnd(','); else return _Result.ToString().TrimEnd(','); } #region functions public string[] GetResultArray() { if (this._Result == null) return null; if (IsUpper) return this.Result.ToString().ToUpper().TrimEnd(',').Split(','); else return this.Result.ToString().TrimEnd(',').Split(','); } public string GetResultString() { if (this._Result == null) return null; if (this._ResolveExpressType.IsIn(ResolveExpressType.SelectMultiple, ResolveExpressType.SelectSingle)) { return this.Result.ToString().TrimEnd(','); } if (IsUpper) return this.Result.ToString().ToUpper(); else return this.Result.ToString(); } public void TrimEnd() { if (this._Result == null) return; this.Result = this.Result.Remove(this.Result.Length - 1, 1); } public bool Contains(string value) { if (this.Result.Equals(value)) return true; return (this.Result.ToString().Contains(value)); } internal void Insert(int index, string value) { if (this.Result == null) this.Result.Append(value); this.Result.Insert(index, value); } public void Append(object parameter) { if (this.CurrentParameter.HasValue() && this.CurrentParameter.AppendType.IsIn(ExpressionResultAppendType.AppendTempDate)) { this.CurrentParameter.CommonTempData = parameter; return; } switch (this._ResolveExpressType) { case ResolveExpressType.ArraySingle: case ResolveExpressType.ArrayMultiple: case ResolveExpressType.SelectSingle: case ResolveExpressType.SelectMultiple: case ResolveExpressType.Update: parameter = parameter + ","; break; case ResolveExpressType.WhereSingle: break; case ResolveExpressType.WhereMultiple: break; case ResolveExpressType.FieldSingle: break; case ResolveExpressType.FieldMultiple: break; default: break; } this.Result.Append(parameter); } public void AppendFormat(string parameter, params object[] orgs) { if (this.CurrentParameter.HasValue() && this.CurrentParameter.AppendType.IsIn(ExpressionResultAppendType.AppendTempDate)) { this.CurrentParameter.CommonTempData = new KeyValuePair(parameter, orgs); return; } switch (this._ResolveExpressType) { case ResolveExpressType.SelectSingle: case ResolveExpressType.SelectMultiple: parameter = parameter + ","; break; case ResolveExpressType.WhereSingle: break; case ResolveExpressType.WhereMultiple: break; case ResolveExpressType.FieldSingle: break; case ResolveExpressType.FieldMultiple: break; default: break; } this.Result.AppendFormat(parameter, orgs); } public void Replace(string parameter, string newValue) { this.Result.Replace(parameter, newValue); } #endregion } }