How To Create Multi Level Menu Dynamically Using C# asp.net

 public void GenerateDynamicMenu()
    {
        NavigationMaster menumaster = new NavigationMaster();
        myUtility objutility = new myUtility();
        DataTable dt = new DataTable();
        dt = objutility.GetMenuList();
        Holdinglist = new List<Menu>();
        foreach (DataRow dr in dt.Rows)
        {
            Menu item = new Menu();
            item.menuId = dr["MENU_ID"].ToString();
            item.menuName = dr["MENU_NAME"].ToString();
            item.parentMenuId = dr["MENU_PARENT_ID"].ToString();
            item.url = dr["MENU_URL"].ToString();
            Holdinglist.Add(item);
        }

        TempHoldinglist = new List<Menu>();
        submenuString.Append("<ul id='menu'>");
        string childItems = GetNextNode("0");
        submenuString.ToString().Remove(submenuString.Length - 4, 4);
        submenuString.Append("</ul>");
        showlist.InnerHtml = submenuString.ToString();
    }
    public string GetNextNode(string Parentid)
    {
        int i = 2;
        int j = 2;
        string[] DarktoLightBlueColorList = BlacktoBlueColors.Split(',');
        List<Menu> ListToReturn = new List<Menu>();
        var menuobj = from List in Holdinglist where List.parentMenuId == Parentid select new { List.menuName, List.url, List.menuId };

        foreach (var node in menuobj)
        {
            childCount = Holdinglist.Count(List => List.parentMenuId == node.menuId);
            if (childCount > 0)
            {
               
                    submenuString.Append("<li style='background:" + DarktoLightBlueColorList[j + 1] + "'><a href='" + node.url + "'>" + node.menuName + "</a><span style='float:right;padding-right:7px;margin-top:-18px'><img width='12px' height='14px' src='" + imageurl + "' /></span><ul>");
            
                j++;
                GetNextNode(node.menuId);
            }
            else
            {
                i = j - 1;
                submenuString.Append("<li style='background:" + DarktoLightBlueColorList[i + 2] + "'><a href='" + Page.ResolveClientUrl("~/" + node.url) + "'>" + node.menuName + "</a></li>");
                i++;
                j++;
            }

            if (i == 15)
            {
                i--;
            }
        }
        submenuString.Append("</ul></li>");
        return submenuString.ToString();
    }