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

来源:互联网 发布:矩阵论第二版课后答案 编辑:程序博客网 时间:2024/06/08 03:36

有疑问的可以去下面地址联系我 欢迎拍砖!

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