linq to xml中group by的应用

 

xml文档内容如下 

<?xml version="1.0" encoding="utf-8"?>
<users>
    <user>
    <id>003</id>
    <name>小张</name>
    <sex>female</sex>
    <age>30</age>
    <university>南大</university>
    <phone>13328981152</phone>
  </user>
  <user>
    <id>004</id>
    <name>xy</name>
    <sex>female</sex>
    <age>22</age>
    <university>一个大学</university>
    <phone>13328981152</phone>
  </user>
  <user>
    <id>005</id>
    <name>小樱</name>
    <sex>female</sex>
    <age>22</age>
    <university>南大</university>
    <phone>13328981152</phone>
  </user>
  <user>
    <id>006</id>
    <name>小赵</name>
    <sex>female</sex>
    <age>22</age>
    <university>南邮</university>
    <phone>13328981152</phone>
  </user>
  <user>
    <id>007</id>
    <name>小虎</name>
    <sex>female</sex>
    <age>22</age>
    <university>东南</university>
    <phone>13328981152</phone>
  </user>

 

        /// <summary>
        /// 按学校分组
        /// </summary>
        /// <returns></returns>
        public DataTable GroupBySchool()
        {
            List<ChartCount> listcount = new List<ChartCount>();
            doc = XDocument.Load(path);

            // 计数
            var users = (from u in doc.Element("users").Elements("user")
                       group u by u.Element("university").Value into g
                       select new
                       {
                           g.Key,
                           Num=g.Count()
                       });

            foreach (var user in users)
            {
                ChartCount cc = new ChartCount();
                cc.School = user.Num;
                cc.Count = user.Key;
                listcount.Add(cc);
            }
            return CollectionHelper.ToDataTable(listcount, null);

        }

 

那么我在分组的时候想要获得一些基本信息怎么办呢?

 

        /// <summary>
        /// 按学校分组
        /// </summary>
        /// <returns></returns>
        public DataTable GroupBySchool()
        {
            List<ChartCount> listcount = new List<ChartCount>();
            doc = XDocument.Load(path);

            // 计数
            var users = (from u in doc.Element("users").Elements("user")
                       group u by u.Element("university").Value into g
                       select new
                       {
                             Id=g.Select(u=>u.Element("id").Value),
                             Name=g.Select(u=>u.Element("name").Value),
                             Sex=g.Select(u=>u.Element("sex").Value),
                             Age=g.Select(u=>u.Element("age").Value),
                             School=g.Select(u=>u.Element("university").Value),
                             Phone=g.Select(u=>u.Element("phone").Value) 

                     });

            foreach (var user in users)
            {
                ChartCount cc = new ChartCount();
                cc.School = user.Num;
                cc.Count = user.Key;
                listcount.Add(cc);
            }
            return CollectionHelper.ToDataTable(listcount, null);

        }

时间: 2024-12-17 22:45:20

linq to xml中group by的应用的相关文章

Linq之Linq to XML

目录 写在前面 系列文章  linq to xml  总结 写在前面 在很多情况下,都可以见到使用xml的影子.例如,在 Web 上,在配置文件.Microsoft Office Word 文件(将word文档另存为xml文件,这也提供了一种通过操作xml,操作word的一种方式)以及数据库中,都可以看到 XML.而linq to xml提供了一种操作xml更便捷的方式. 系列文章 Linq之Lambda表达式初步认识 Linq之Lambda进阶 Linq之隐式类型.自动属性.初始化器.匿名类

解析linq to xml操作XML的示例分析_实用技巧

.Net中的System.Xml.Linq命名空间提供了linq to xml的支持.这个命名空间中的XDocument,XElement以及XText,XAttribute提供了读写xml文档的关键方法.1. 使用linq to xml写xml:使用XDocument的构造函数可以构造一个Xml文档对象:使用XElement对象可以构造一个xml节点元素,使用XAttribute构造函数可以构造元素的属性:使用XText构造函数可以构造节点内的文本.如下实例代码: 复制代码 代码如下: cla

如何快速上手LINQ to XML

在我们的程序中,我们经常需要将一些系统的数据.信息保存在文件中,而不是保存在数据库中,在.NET中,我通常都是选择将这些系统的数据.信息保存在XML中. 操作XML的技术有很多种: 1)DOM(Document Object Model,文档对象模型),它为XML文档提供了一个标准的解析. 2)XPath和XSLT,它们提供了查询和格式化XML的功能. 3).NET框架中提供了一些对XML操作的类(在System.XML命名空间下). 4)LINQ to XML. 在我看来有了LINQ to X

为什么LINQ to XML的性能要优于XmlDocument?

一直很忙,压了很多贴,今天发一篇吧.后面的看心情吧. 今天群里有人问如何解析web.config方便,然后我就推荐了Linq to XML,然后就有人说"我宁可XmlDocument,再SeleteNodes和SeleteNode",不要用LINQ之类的,甚至否定EntityFramework等一系列框架,认为这些都是所谓的"懒人技术",都是以牺牲性能为代价的.我在这里想申明一点,没有测试就没有发言权,并不是所有的"懒人技术"都是以牺牲性能为代价

LINQ to XML LINQ学习第一篇

1.LINQ to XML类   以下的代码演示了如何使用LINQ to XML来快速创建一个xml: public static void CreateDocument() { string path = @"d:\website"; XDocument xdoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), new XElement("Root&

c# linq to xml-关于c# winform中XML得问题,可能涉及linq to xml

问题描述 关于c# winform中XML得问题,可能涉及linq to xml 对于图片上面的图元,我需要把它存成XML,需要图元的位置,大小,类型,修改图元以后,旧的信息会删除,存入新的信息.请各位帮帮忙,谢谢. 解决方案 不明白,这个难度有点大啊,你的这三个图片是在一张图上啊.

使用LINQ to XML来读取XML文档

用于XML的语言级集成查询(LINQ to XML)允许使用标准查询操作符就像树形操作符一样来查询XML数据,它能够提供类似XPath的导航在后代.祖先和兄弟的XML元素中导航.它简化了对XML数据的使用,不必使用额外的语言语法像XPath或XQuery.你可以使用LINQ to XML对你从文件系统.从一个远程web service或从一个内存中的XML内容中获得的XML执行LINQ查询.这篇文章将只关注于使用LINQ从一个XML文件--Customers.xml文件查询XML. 创建一个简单

Linq To XML学习

这几天抽空看了看C# 3.0的一些新特性,匿名对象.Lambda表达式.Linq等 ,给我很大的冲击.简洁化.人性化.更加可读易理解的代码,让C# 3.0增色不 少.以前我总认为C#语言就是follow Java语言,现在看来微软就是强大,在流 行的基础上创出了自己的个性,漂亮简洁高效的编程语言让人不得不倾心. 因为以前的项目用到Xml操作比较多,我着重看了看Linq To Xml,用 msdn上的话来说,Linq To Xml是LINQ项目的一个组件,它是一种现代化的.在 内存中的XML编程A

Linq To Xml学习 - 3.查询、更新、删除

Linq To Xml学习 - 3.查询.更新.删除 文章最后有该示例的XML文档. 查找具有特定属性的元素 XElement root = XElement.Load ("PurchaseOrder.xml"); IEnumerable address = from el in root.Elements("Address") where (string)el.Attribute("Type") == "Billing" s