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



C#使用LINQ to XML操作XML实例

W3C制定了XML DOM标准,.Net为了支持W3C的标准,从1.1版本开始就引入了XmlDocument类。在前一篇文章中,介绍了C#加载和查询XML的XmlDocument类使用实例。后来 ...
  • Lyncai
  • Lyncai
  • 2013年08月18日 12:50
  • 1855

Linq To Entity 多表联合查询

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Lin...
  • Fanbin168
  • Fanbin168
  • 2014年04月28日 16:19
  • 2233

LINQ to Entities多表查询

LINQ 技术(即 LINQ to Entities)使开发人员能够通过使用 LINQ 表达式和 LINQ 标准查询运算符,直接从开发环境中针对 实体框架对象上下文创建灵活的强类型查询。LINQ to...
  • niewq
  • niewq
  • 2015年01月14日 22:08
  • 10202

LINQ TO XML C#实例 类和XML文件互转换

XML TO LINQ C#实例 类和XML文件互转换 xml文件 xml version="1.0" encoding="utf-8" ?> User> UserID>3...
  • feiying008
  • feiying008
  • 2012年08月16日 16:24
  • 1055

Entity Framework技术系列之7:LINQ to Entities

前言 LINQ(Language Integrated Query,语言集成查询)是一组用于C#和VB.NET语言的扩展,它允许编写C#或者VB.NET代码,以与查询数据库相同的方式操作内存数据。L...
  • dyllove98
  • dyllove98
  • 2013年04月03日 23:58
  • 10486

LINQ TO Entity 在数据库发生更改时更新实体数据模型 .edmx 文件

在“模型浏览器”中,右击 .edmx 文件,然后选择“从数据库更新模型”。模型更新向导启动。如果未指定任何数据库连接,则会显示“选择数据库连接”对话框。否则,将会显示“选择数据库对象”对话框。 如果显...
  • tiz198183
  • tiz198183
  • 2013年03月02日 17:07
  • 2420

Linq to Entity 增,删,改,查 语句

一、增 public void Insert(ExamineeDto item) { using (var ctx = new Personne...
  • tiz198183
  • tiz198183
  • 2013年12月18日 11:00
  • 1642

Linq To Entity多条件or查询处理

1.多条件OR使用实例: //学费 if (string.IsNullOrEmpty(tuition) == false && tuition != "0") { Expression>...
  • u011127019
  • u011127019
  • 2016年07月11日 14:20
  • 1689

Linq随机读取数据浅析

学习Linq时,经常会遇到Linq随机读取数据问题,这里将介绍Linq随机读取数据问题的解决方法 Linq随机读取数据 在系统自由生成的o/p mapping代码中添加这个方法,如果是用户自己...
  • dupeng0811
  • dupeng0811
  • 2010年07月26日 11:34
  • 1351

使用linq to list 做递归

private IEnumerable GetChildren_Menue(int ID, List XX)         {             List children_Menue =...
  • zk_1949
  • zk_1949
  • 2014年09月05日 11:31
  • 690
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linq to xml/动态类型 从树型表构建树(linq to entity处理数据库)
举报原因:
原因补充:

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