/// <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);
        }
Exemple #2
0
        /// <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);
        }