Exemplo n.º 1
0
        private static void AddParameters(ParameterizedQueryBuilder builder, object[] parameters, int begin, int end)
        {
            for (int parameterIndex = begin; parameterIndex < end; parameterIndex++)
            {
                AddParameter(builder, parameters[parameterIndex]);
                builder.AppendText(",");
            }

            AddParameter(builder, parameters[end]);
        }
Exemplo n.º 2
0
        private static void AddParameter(ParameterizedQueryBuilder builder, object value)
        {
            var partial = value as IParameterizedQueryPartial;

            if (partial == null)
            {
                var container = value as IDbQueryContainer;
                if (container != null)
                {
                    partial = container.Query as IParameterizedQueryPartial;
                }
            }

            if (partial != null)
            {
                partial.AppendTo(builder);
                return;
            }


            var array = value as Array;

            if (array != null)
            {
                if (array.Length == 0)
                {
                    return;
                }


                for (int i = 0; i < array.Length - 1; i++)
                {
                    AddParameter(builder, array.GetValue(i));
                    builder.AppendText(",");
                }

                AddParameter(builder, array.GetValue(array.Length - 1));
                return;
            }


            builder.AppendParameter(value);
        }
Exemplo n.º 3
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.Any())
            {
                return(null);
            }

            var builder = new ParameterizedQueryBuilder();

            queries[0].AppendTo(builder);

            foreach (var q in queries.Skip(1))
            {
                builder.AppendText(sperator);
                builder.AppendPartial(q);
            }


            return(builder.CreateQuery());
        }
Exemplo n.º 4
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());
        }