ExpressionResult.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace SqlSugar
  7. {
  8. public class ExpressionResult
  9. {
  10. public bool IsLockCurrentParameter { get; set; }
  11. public bool IsUpper { get; set; }
  12. public bool IsNavicate { get; set; }
  13. private ExpressionParameter _CurrentParameter;
  14. public ExpressionParameter CurrentParameter
  15. {
  16. get
  17. {
  18. return this._CurrentParameter;
  19. }
  20. set
  21. {
  22. Check.Exception(value != null && IsLockCurrentParameter, "CurrentParameter is locked.");
  23. this._CurrentParameter = value;
  24. this.IsLockCurrentParameter = false;
  25. }
  26. }
  27. #region constructor
  28. private ExpressionResult()
  29. {
  30. }
  31. public ExpressionResult(ResolveExpressType resolveExpressType)
  32. {
  33. this._ResolveExpressType = resolveExpressType;
  34. }
  35. #endregion
  36. #region Fields
  37. private ResolveExpressType _ResolveExpressType;
  38. private StringBuilder _Result;
  39. #endregion
  40. #region properties
  41. private StringBuilder Result
  42. {
  43. get
  44. {
  45. if (_Result == null) _Result = new StringBuilder();
  46. return _Result;
  47. }
  48. set
  49. {
  50. _Result = value;
  51. }
  52. }
  53. public bool LastCharIsSpace{
  54. get {
  55. if (_Result == null|| _Result.Length==0) return true;
  56. return _Result.ToString().Last() == UtilConstants.SpaceChar;
  57. }
  58. }
  59. #endregion
  60. public string GetString()
  61. {
  62. if (_Result == null) return null;
  63. if (IsUpper)
  64. return _Result.ToString().ToUpper().Replace(UtilConstants.ReplaceCommaKey,",").TrimEnd(',');
  65. else
  66. return _Result.ToString().Replace(UtilConstants.ReplaceCommaKey, ",").TrimEnd(',');
  67. }
  68. #region functions
  69. public string[] GetResultArray()
  70. {
  71. if (this._Result == null) return null;
  72. var reslut = new List<string>();
  73. if (IsUpper)
  74. reslut= this.Result.ToString().ToUpper().TrimEnd(',').Split(',').ToList();
  75. else
  76. reslut= this.Result.ToString().TrimEnd(',').Split(',').ToList();
  77. if (this.Result.ToString().Contains(UtilConstants.ReplaceCommaKey))
  78. {
  79. for (int i = 0; i < reslut.Count; i++)
  80. {
  81. reslut[i] = reslut[i].Replace(UtilConstants.ReplaceCommaKey, ",");
  82. }
  83. }
  84. return reslut.ToArray();
  85. }
  86. public string GetResultString()
  87. {
  88. if (this._Result == null) return null;
  89. if (this._ResolveExpressType.IsIn(ResolveExpressType.SelectMultiple, ResolveExpressType.SelectSingle))
  90. {
  91. return this.Result.ToString().Replace(UtilConstants.ReplaceCommaKey, ",").TrimEnd(',');
  92. }
  93. if (IsUpper)
  94. return this.Result.ToString().Replace(UtilConstants.ReplaceCommaKey, ",").ToUpper();
  95. else
  96. return this.Result.ToString().Replace(UtilConstants.ReplaceCommaKey, ",");
  97. }
  98. public void TrimEnd()
  99. {
  100. if (this._Result == null) return;
  101. this.Result = this.Result.Remove(this.Result.Length - 1, 1);
  102. }
  103. public bool Contains(string value)
  104. {
  105. if (this.Result.Equals(value)) return true;
  106. return (this.Result.ToString().ToLower().Contains(value?.ToLower()));
  107. }
  108. internal void Insert(int index, string value)
  109. {
  110. if (this.Result == null) this.Result.Append(value);
  111. this.Result.Insert(index, value);
  112. }
  113. public void Append(object parameter)
  114. {
  115. if (this.CurrentParameter.HasValue() && this.CurrentParameter.AppendType.IsIn(ExpressionResultAppendType.AppendTempDate))
  116. {
  117. this.CurrentParameter.CommonTempData = parameter;
  118. return;
  119. }
  120. switch (this._ResolveExpressType)
  121. {
  122. case ResolveExpressType.ArraySingle:
  123. case ResolveExpressType.ArrayMultiple:
  124. case ResolveExpressType.SelectSingle:
  125. case ResolveExpressType.SelectMultiple:
  126. case ResolveExpressType.Update:
  127. parameter = parameter + ",";
  128. break;
  129. case ResolveExpressType.WhereSingle:
  130. break;
  131. case ResolveExpressType.WhereMultiple:
  132. break;
  133. case ResolveExpressType.FieldSingle:
  134. break;
  135. case ResolveExpressType.FieldMultiple:
  136. break;
  137. default:
  138. break;
  139. }
  140. this.Result.Append(parameter);
  141. }
  142. public void AppendFormat(string parameter, params object[] orgs)
  143. {
  144. if (this.CurrentParameter.HasValue() && this.CurrentParameter.AppendType.IsIn(ExpressionResultAppendType.AppendTempDate))
  145. {
  146. this.CurrentParameter.CommonTempData = new KeyValuePair<string, object[]>(parameter, orgs);
  147. return;
  148. }
  149. switch (this._ResolveExpressType)
  150. {
  151. case ResolveExpressType.SelectSingle:
  152. case ResolveExpressType.SelectMultiple:
  153. parameter = parameter + ",";
  154. break;
  155. case ResolveExpressType.WhereSingle:
  156. break;
  157. case ResolveExpressType.WhereMultiple:
  158. break;
  159. case ResolveExpressType.FieldSingle:
  160. break;
  161. case ResolveExpressType.FieldMultiple:
  162. break;
  163. default:
  164. break;
  165. }
  166. this.Result.AppendFormat(parameter, orgs);
  167. }
  168. public void Replace(string parameter, string newValue)
  169. {
  170. this.Result.Replace(parameter, newValue);
  171. }
  172. #endregion
  173. }
  174. }