zoukankan      html  css  js  c++  java
  • 递归遍历树结构顺序显示并且添加到list集合

    
    
     /// <summary>
            /// 给流程排序 by 于連偉 2015/06/15
            /// </summary>
            /// <param name="lstNextItem">本集合的下一个集合</param>
            /// <param name="returnItem">排序后的返回集合</param>
            public static void OrderLink(List<TLink> lstNextItem, List<TLink> returnItem) 
            {
                foreach (TLink link in lstNextItem)
                {
                    if (link.LinkState != "E")
                    {
                        if (returnItem.Find(x => { return x.LinkGuid == link.LinkGuid; }) == null)
                        {
                            returnItem.Add(link);
                        }
                    }
                }
                foreach (TLink link in lstNextItem)
                {
                    if (link.LinkState != "E")
                    {
                        List<TLink> newLink = ListNextLink(link.LinkGuid);
                        OrderLink(newLink, returnItem);
                    }
                }
            }
    
            public static List<TLink> ListNextLink(string linkGuid)
            {
                using (OracleConnection conn = new OracleConnection(TDataCore.mJkConnStr))
                {
                    try
                    {
                        List<TLink> lst = new List<TLink>();
                        conn.Open();
    
                        OracleCommand cmd = conn.CreateCommand();
                        cmd.CommandText = string.Format("select {0} from t_link where linkGuid in (select endLinkGuid from t_line where startLinkGuid=:linkGuid)", m_LinkField);
                        OracleParameter param = cmd.Parameters.Add(":linkGuid", OracleDbType.Varchar2);
                        param.Value = linkGuid;
                        using (OracleDataReader dr = cmd.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                lst.Add(GetLink(dr));
                            }
                        }
                        conn.Close();
                        return lst;
                        
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                    finally
                    {
                        if (conn != null && conn.State != ConnectionState.Closed)
                        {
                            conn.Close();
                        }
                    }
                }
            }
    
    
    
     

    其中ListNextLink方法是查找下一个节点的方法,要依据实际情况自己去写出

    这个递归是第一个和最后一个元素不递归,中间的每个元素都要查找出下一个元素然后循环去添加每一个递归出来的本元素的下一个元素,如果重复则不添加

  • 相关阅读:
    spymemcache与spring结合
    Turtle库的学习积累
    汉诺塔绘图学习
    计算圆周率π和显示进度条
    川菜 in English
    一些必不可少的Sublime Text 2插件 钟磊的专栏 博客频道 CSDN.NET
    \usepackage{natbib}在latex模板写作中的心得_格致轩_百度空间
    Geant4新版本:新安装方法,新运行方式
    ubuntu系统备份
    Latex数学公式中的空格
  • 原文地址:https://www.cnblogs.com/llcdbk/p/4579874.html
Copyright © 2011-2022 走看看