Exemplo n.º 1
0
        /// <summary>
        /// 将多个参数化查询串联起来并用指定的字符串分隔
        /// </summary>
        /// <param name="sperator">分隔符</param>
        /// <param name="queries">参数化查询</param>
        /// <returns>串联后的结果</returns>
        public static ParameterizedQuery Join(this string sperator, params ParameterizedQuery[] queries)
        {
            if (queries == null)
            {
                throw new ArgumentNullException("queries");
            }


            queries = queries.Where(i => i != null).ToArray();//去除所有为 null 的参数化查询对象
            if (!queries.Any())
            {
                return(null);
            }

            var builder = new ParameterizedQueryBuilder();

            queries[0].AppendTo(builder);

            foreach (var q in queries.Skip(1))
            {
                if (!builder.IsEndWithWhiteSpace() && !char.IsWhiteSpace(sperator[0]) && Db.AddWhiteSpaceOnConcat)
                {
                    builder.Append(' ');
                }

                builder.AppendText(sperator);

                if (!builder.IsEndWithWhiteSpace() && !q.IsStartWithWhiteSpace() && Db.AddWhiteSpaceOnConcat)
                {
                    builder.Append(' ');
                }

                builder.AppendPartial(q);
            }


            return(builder.CreateQuery());
        }
        /// <summary>
        /// 串联多个参数化查询对象
        /// </summary>
        /// <param name="firstQuery">第一个参数化查询对象</param>
        /// <param name="otherQueries">要串联的其他参数化查询对象</param>
        /// <returns>串联后的参数化查询对象</returns>
        public static ParameterizedQuery Concat(this ParameterizedQuery firstQuery, params ParameterizedQuery[] otherQueries)
        {
            var builder = new ParameterizedQueryBuilder();

            firstQuery.AppendTo(builder);
            foreach (var query in otherQueries)
            {
                if (!builder.IsEndWithWhiteSpace() && !query.IsStartWithWhiteSpace() && Db.AddWhiteSpaceOnConcat)
                {
                    builder.Append(' ');
                }

                query.AppendTo(builder);
            }

            return(builder.CreateQuery());
        }
Exemplo n.º 3
0
        /// <summary>
        /// 串联多个参数化查询对象
        /// </summary>
        /// <param name="firstQuery">第一个参数化查询对象</param>
        /// <param name="otherQueries">要串联的其他参数化查询对象</param>
        /// <returns>串联后的参数化查询对象</returns>
        public static ParameterizedQuery Concat(this ParameterizedQuery firstQuery, params ParameterizedQuery[] otherQueries)
        {
            var builder = new ParameterizedQueryBuilder();

            firstQuery.AppendTo(builder);
            foreach (var query in otherQueries)
            {
                if (query == null || string.IsNullOrEmpty(query.TextTemplate))
                {
                    continue;
                }

                if (!builder.IsEndWithWhiteSpace() && !query.IsStartWithWhiteSpace() && Db.AddWhiteSpaceOnConcat)
                {
                    builder.Append(' ');
                }

                query.AppendTo(builder);
            }

            return(builder.CreateQuery());
        }