LINQ to XML 分组依据

2024-01-04

我想使用 LINQ 通过在“Summary”字段上执行 GROUPBY 并对 Balance 字段求和来将输入 XML 转换为输出 XML。

输入 XML:

<Root>
  <Account>
    <Summary>Checking</Summary>
    <Comprehensive>Interest Checking Account</Comprehensive>
    <Currency>Dollar</Currency>
    <Balance>10000000.000000</Balance>
  </Account>
  <Account>
    <Summary>Savings</Summary>
    <Comprehensive>Market Account</Comprehensive>
    <Currency>Dollar</Currency>
    <Balance>20000000.000000</Balance>
  </Account>
  <Account>
    <Summary>Checking</Summary>
    <Comprehensive>Interest Checking Account</Comprehensive>
    <Currency>Dollar</Currency>
    <Balance>50000000.000000</Balance>
  </Account>  
</Root>

输出 XML:

<Root>
  <Account>
    <Summary>Checking</Summary>
    <Comprehensive>Interest Checking Account</Comprehensive>
    <Currency>Dollar</Currency>
    <Balance>60000000.000000</Balance>
  </Account>
  <Account>
    <Summary>Savings</Summary>
    <Comprehensive>Market Account</Comprehensive>
    <Currency>Dollar</Currency>
    <Balance>20000000.000000</Balance>
  </Account>
</Root>

我尝试了这个但无法获取节点/元素:

XElement groupData = new XElement("Root",
    chartData.Elements().GroupBy(x => x.Element("Summary").Value).
        Select(g => new XElement("Account", g.Key, g.Elements("Comprehensive"),
            g.Elements("Currency"),
            g.Sum(
                s =>
                (decimal)
                s.Element("Balance")))));

任何帮助,将不胜感激。提前致谢。


如果您不需要中间对象,您可以使用

    XDocument input = XDocument.Load("input.xml");
    XDocument output =
        new XDocument(
            new XElement(input.Root.Name,
                from account in input.Root.Elements("Account")
                group account by account.Element("Summary").Value into g
                select new XElement("Account",
                    g.ElementAt(0).Elements().Where(e => e.Name != "Balance"),
                    new XElement("Balance", g.Elements("Balance").Sum(b => (decimal)b)
                    ))));
    output.Save("output.xml");

或者使用方法语法,您可以使用

    XDocument input = XDocument.Load(@"input.xml");
    XDocument output = new XDocument(
            new XElement(input.Root.Name,
                input.Root.Elements("Account")
                .GroupBy(a => a.Element("Summary").Value)
                .Select(g => new XElement("Account",
                    g.ElementAt(0).Elements().Where(e => e.Name != "Balance"),
                    new XElement("Balance", g.Elements("Balance").Sum(b => (decimal)b)
                    )))));
    output.Save("output.xml");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LINQ to XML 分组依据 的相关文章

随机推荐

  • 我们如何指导屏幕阅读器正确地强调/强调/发音单词

    我正在寻求改善新闻网站上的屏幕阅读器体验 具体来说 我在 Mac 上通过 VoiceOver 进行测试 遇到了以下问题 采取以下句子 直播 发生有新闻价值的事件 在这里 我们希望 LIVE 与 alive l v 但 VoiceOver 将
  • 检索解决方案的路径?

    我们目前正在为我们的公司设置 Team Build 2010 我正在尝试使用工作流活动来检索当前正在构建的解决方案的确切本地路径 我还没有找到获得这个值的方法 有人知道如何 不编写自定义活动 吗 服务器或本地路径之一就足够了 即 TeamP
  • 可以避免在 Java 中默认调用 super() 吗?

    假设由于某种原因我不想隐式调用super 这是默认完成的 class Animal public Animal System out println Constructing an animal class Dog extends Anim
  • 在 python 中使用 oauth2 服务帐户向 Google API 进行身份验证

    我已按照以下说明进行操作https developers google com accounts docs OAuth2ServiceAccount https developers google com accounts docs OAu
  • EntityManager 在 JBoss JSF bean 中的 merge() 上抛出 TransactionRequiredException

    我在 JBoss 5 0 1GA 上设置了一个 JSF 应用程序 以在表中显示用户列表 并允许通过每个用户旁边的按钮删除单个用户 当deleteUser被调用时 调用被传递到一个UserDAOBean 它获取从JBoss注入的EntityM
  • 詹金斯订书机请求失败,没有有效的面包屑

    我正在开发一个 Jenkins 插件 现在我陷入了一个困境 我试图使用 JavaScript 代理获取方法的返回值 如下所述here https wiki jenkins io display JENKINS AJAX with JavaS
  • 带有 LDAP 身份验证的 OWIN

    这是我的场景 我有一个使用 Owin 作为身份验证机制的 MVC 5 应用程序 默认模板在登录操作中调用 SignInManager PasswordSignInAsync 我想覆盖该操作以使用 LDAP 验证用户 而不是查看数据库 我可以
  • 如何同步一系列 Promise?

    我有一个 Promise 对象数组 必须按照它们在数组中列出的顺序来解析 即在前一个元素被解析之前我们不能尝试解析一个元素 作为方法Promise all does 如果一个元素被拒绝 我需要链立即拒绝 而不尝试解析下一个元素 我该如何实现
  • 编写 Spark 作业时是否有理由不使用 SparkContext.getOrCreate?

    我正在编写与 Datastax 中的 Cassandra 对话的 Spark 作业 有时 在执行 Spark 作业中的一系列步骤时 获取新 RDD 比加入旧 RDD 更容易 您可以通过调用来做到这一点SparkContext getOrCr
  • 在 MATLAB 中显示梯度图像的颤动图

    我有一个形象 我想显示使用 MATLAB 中的梯度函数获得的梯度图像的颤动图 最好叠加在梯度图像上 I imread image png gx gy gradient double rgb2gray I g abs gx abs gy fi
  • 具有安全用户身份验证和注册第三方应用程序的简单 PHP REST 服务器

    我正在考虑编写一个 PHP REST API 允许注册用户与第三方应用程序的 Web 服务进行交互 我需要 API 能够做的是 提供对安全用户身份验证的支持 允许注册用户与第三方应用程序的服务交互 该应用程序应事先在系统上注册并获得批准 类
  • 考虑重复,在数组中存储随机值

    这是一个新版本这个帖子 https stackoverflow com questions 4990164 estimating the probability of 3 people sharing a birthday为了将编程问题与概
  • 通用类的类助手?

    我正在使用 Delphi 2009 是否可以为通用类 即 TQueue 编写一个类帮助器 显而易见的 TQueueHelper
  • 如何从具有或不具有背景大小的文件夹创建精灵(使用指南针)

    我想将指南针生成的图标精灵用于两种不同的场景 使用原始大小的图标 使用 CSS3 属性使用与较小版本相同的图标background size 我首先这样做 logo spacing 20px import logo png include
  • NHibernate;删除子项也会删除父项吗?

    为什么是当我删除子级 员工 时 父级 商店 也被删除 我配置为约定 Cascade All The 用户输入序列很简单 从空数据库开始 添加家长 保存 加载 加载 重新加载完整对象图 添加一个孩子 保存 加载 删除子项 结果 数据库为空 父
  • Spotify 自动播放列表管理与 PHP 后端和速率限制

    两个问题 问题1 我们需要从我们的后端 PHP 管理 Spotify 用户的 4 个播放列表 无需用户登录 我们网站的访问者可以向我们的网站提交多首他们喜欢的歌曲 在此基础上 我们创建并管理 4 个播放列表 其中包含 提交最多的歌曲 我们希
  • 如何显示用户时区的时间

    我使用的是rails 3 0 5 并且已将created at 和updated at 存储在UTC 中 现在我想显示用户时区中的created at时间 我相信可以从浏览器中选择用户的时区 然后将时间转换为用户的时区 我确信 Rails
  • 使用 NPOI 将图像添加到 Word docx 文件

    我开始使用 NPOI 创建 Word 文档 并且尝试将简单的图像添加到文档中 但它没有显示 不过我可以让文字显示得很好 这是我的代码 var wDoc new XWPFDocument var bytes File ReadAllBytes
  • Android TV 中缺少应用栏的替代方案

    我只是注意到我的 Android 应用程序 当我运行它时 Android TV 带有后倾意图 但事实并非如此 显示菜单项的三明治按钮 This is missing and everthing else like the title 建议的
  • LINQ to XML 分组依据

    我想使用 LINQ 通过在 Summary 字段上执行 GROUPBY 并对 Balance 字段求和来将输入 XML 转换为输出 XML 输入 XML