您的位置:首页 > 数据库

linq to xml/动态类型 从树型表构建树(linq to entity处理数据库)

2011-07-14 10:43 671 查看
有疑问的可以去下面地址联系我 欢迎拍砖!

http://bbs.ctrlc.com.cn/forum.php?mod=viewthread&tid=594&extra=page%3D1

数据库



linq to xml方法

public dynamic GetAllTree()
        {
            List<MenuClassify> roots = GetAllRoot();//取得所有根节点

            //创建xml
            XDocument tree = new XDocument();
            tree.Declaration = new XDeclaration("1.0", "utf-8", "no");
            tree.Add(new XElement("Tree"));
   
            //添加树
            foreach (var menuClassify in roots)
            {
                XElement node=new XElement("Node");//添加节点
                node.SetAttributeValue("name", menuClassify.Name);//为节点添加属性
                node.SetAttributeValue("id", menuClassify.MenuClassifyID);
                tree.Element("Tree").Add(node);//将节点加入树
                NextNode(menuClassify.MenuClassifyID,node);//开始递归
            } 

            string xmlstr = tree.ToString();
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xmlstr);
            string jsonStr = JsonConvert.SerializeXmlNode(doc);

            return tree;   
        }
public void NextNode(int id,XElement parentNode)
        {
            var nodes = DBHelper.Entity.MenuClassifies.Where(m => m.ParentID == id).Select(m => m);//获得次父节点的所有子节点

            foreach (var node in nodes)
            {                              
                XElement xNode=new XElement("Node");
                parentNode.Add(xNode);
                xNode.SetAttributeValue("name",node.Name);
                xNode.SetAttributeValue("id",node.MenuClassifyID);
                NextNode(node.MenuClassifyID,xNode);//递归遍历
            }
        }

dynamic方式构建

public dynamic GetAllTree()
        {
            List<MenuClassify> roots = GetAllRoot();//取得所有根节点

            List<dynamic> tree=new List<dynamic>();

            foreach (var root in roots)
            {
                dynamic node = new ExpandoObject();//创建节点
                node.name = root.Name;//为属性赋值
                node.id = root.MenuClassifyID;
                tree.Add(node);//将节点加入树
                NextNode(root.MenuClassifyID,node);//开始递归
            }

            string jsonstr = JsonConvert.SerializeObject(tree);//test部分 序列化成json

            return tree;
        }

        public void NextNode(int id,dynamic parentNode)
        {
            var nodes = DBHelper.Entity.MenuClassifies.Where(m => m.ParentID == id).Select(m => m);

            if (nodes.ToList().Count != 0)//存在子节点
            {
                List<dynamic> list = new List<dynamic>();
                parentNode.nodes = list;
                foreach (var node in nodes)
                {
                    dynamic n = new ExpandoObject();
                    n.name = node.Name;
                    n.id = node.MenuClassifyID;
                    list.Add(n);

                    NextNode(node.MenuClassifyID, n);
                }
            }
        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐