/// <summary> /// 添加一个构造项 /// </summary> /// <typeparam name="T">数据的类型</typeparam> /// <returns>返回这个Builder自己,便于编写连续AppendItem语句,例如b.AppendItem(...).AppendItem(...)</returns> /// <param name="dataField">Sql语句中的字段名</param> /// <param name="data">操作的数据</param> /// <param name="op">操作运算符</param> /// <param name="template">模板的样式</param> /// <param name="isExpression">操作的数据是否是表达式</param> public virtual TBuilder AppendItem <T>(string dataField, T data, string op, string template, bool isExpression) { SqlClauseBuilderItemUW item = (SqlClauseBuilderItemUW)CreateBuilderItem(); item.DataField = dataField; item.IsExpression = isExpression; item.Operation = op; item.Data = data; item.Template = template; List.Add(item); return((TBuilder)this); }
/// <summary> /// /// </summary> /// <param name="builderItem"></param> /// <returns></returns> protected override bool DecideIsMatched(SqlCaluseBuilderItemWithData builderItem) { bool result = false; /* * string pattern2 = @"\b(?i)(constains){1}\s*\({1}.*\){1}"; * foreach (Match match in Regex.Matches(input, pattern2)) * { * Console.WriteLine(match.Value); * } */ SqlClauseBuilderItemUW uwItem = builderItem as SqlClauseBuilderItemUW; if (uwItem != null) { if (uwItem.Template.IsNotEmpty()) { ParseResult pr = ExpressionParser.Parse(uwItem.Template, false); if (pr.Identifiers != null) { pr.Identifiers.ScanIdentifiers(id => { if (string.Compare(id.Identifier, "contains", true) == 0) { result = true; } return(result == false); }); } } } return(result); }