linq-to-xml – LINQ to XML GroupBy
发布时间:2020-12-16 05:35:39 所属栏目:百科 来源:网络整理
导读:我想使用LINQ将输入 XML转换为输出 XML,方法是在“Summary”字段上执行GROUPBY并将Balance字段向上扩展. 输入XML: Root Account SummaryChecking/Summary ComprehensiveInterest Checking Account/Comprehensive CurrencyDollar/Currency Balance10000000.0
我想使用LINQ将输入
XML转换为输出
XML,方法是在“Summary”字段上执行GROUPBY并将Balance字段向上扩展.
输入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"))))); 任何帮助,将不胜感激.提前致谢.
我建议将其投影到普通对象中,对它们进行分组,然后再投射回XML:
var data = from acct in chartData.Elements() select new { Summary = (string)acct.Element("Summary"),Comprehensive = (string)acct.Element("Comprehensive"),Currency = (string)acct.Element("Currency"),Balance = (decimal)acct.Element("Balance"),}; var grouped = from acct in data group acct by acct.Summary into g select new { Summary = g.Key,Comprehensive = g.First().Comprehensive,Currency = g.First().Comprehensive,Balance = g.Sum(),}; var groupData = new XElement("Root",from g in grouped select new XElement("Account",new XElement("Summary",g.Summary),new XElement("Comprehensive",g.Comprehensive),new XElement("Currency",g.Currency),new XElement("Balance",g.Balance.ToString("0.000000")) ) ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |