You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

172 lines
5.5 KiB

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<string, object[]>(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
}
}