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

原创 2011年07月14日 10:43:20

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

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



使用Linq to xml 动态创建Xml文件(数据来自数据库)

LINQto XML 是一种启用了 LINQ 的内存XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML。 using System.Data.Linq; usin...

linq to xml

  • 2012年08月23日 11:34
  • 199KB
  • 下载

linq to xml入门的例子

  • 2014年09月05日 02:28
  • 96KB
  • 下载

Linq TO XML (读写)

1.写XML文件XElement xperson = new XElement("person");//根节点 xperson.SetAttributeValue("age"...

LINQ to XML 编程基础 Via C#

  • 2015年04月28日 09:43
  • 451KB
  • 下载

在Linq to XML中根据元素属性合成XPath字符串进行查询

目标:            实现类似于SQL的where条件方式从XML中查询出满足指定属性值的元素集合,并可通用到其它XML文档。 平台及工具: windows7 旗舰版 VS...
  • IT_TOM
  • IT_TOM
  • 2011年08月30日 22:21
  • 668

C#Linq to xml

  • 2008年06月25日 09:48
  • 88KB
  • 下载

一个实例掌握linq to XML增查删改

wince底下开发有用到解析xml,但是我的.net是compact版本的,没办法用,留个脚印 转自:http://hi.baidu.com/pappercut/blog/item/1882c43d...
  • sukyle
  • sukyle
  • 2011年11月21日 16:45
  • 999

LINQ TO XML

一个实例掌握linq to XML增查删改 2008-12-17 06:47 P.M.最近忽然想把过去写的IPMSG更新一下,把聊天记录部分改用linq实现,感觉确实比DOM直观多了,写下来希望对新手...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linq to xml/动态类型 从树型表构建树(linq to entity处理数据库)
举报原因:
原因补充:

(最多只允许输入30个字)