예제 #1
0
        public void Test_ChildIn()
        {
            ConditionBuilder builder = new ConditionBuilder();

            builder.In("A.ID", "select Id from User");
            builder.In("A.ID", new[] { 1, 2, 3, 4, 56, 7 });
            builder.And(x =>
            {
                x.Contains("A.Name", "测试");
            });
            var result = builder.ToString();
            var param  = builder.GetParamDict().ToJson();

            Console.WriteLine(result);
            Console.WriteLine(param);
        }
예제 #2
0
        /// <summary>
        /// 获取子节点列表Sql语句
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="pkFieldName">主键字段名</param>
        /// <param name="pkFieldValues">主键字段值数组</param>
        /// <param name="parentFieldName">父节点字段名</param>
        /// <param name="order">排序</param>
        /// <param name="idOnly">是否只需要主键</param>
        /// <param name="conditionBuilder">条件生成器</param>
        /// <returns></returns>
        public string GetChildrens(string tableName, string pkFieldName, string[] pkFieldValues, string parentFieldName, string order,
                                   bool idOnly = false, Action <IConditionBuilder> conditionBuilder = null)
        {
            StringBuilder sb = new StringBuilder();

            ConditionBuilder builder = new ConditionBuilder();

            builder.In(pkFieldName, pkFieldValues);
            conditionBuilder?.Invoke(builder);

            sb.AppendFormat(
                @"with Tree as (select {0} from {1} {2} union all select ResourceTree.{0} from {1} as ResourceTree inner join Tree as A on A.{3} = ResourceTree.{4}) select {0} from Tree",
                idOnly ? pkFieldName : "*", tableName, builder.ToString(), pkFieldName, parentFieldName);

            _currentParamDict = builder.GetParamDict();

            sb.AppendFormat(" order by {0} ", order);

            return(sb.ToString());
        }