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); }
/// <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()); }