gpt4 book ai didi

c# - Linq to XML 创建具有唯一父元素的元素

转载 作者:太空宇宙 更新时间:2023-11-03 21:06:23 25 4
gpt4 key购买 nike

使用此 Linq 语句创建 XML

new XElement(ns + "SpecialRegisters",
from reg in registers
where reg.IsUpdateRegister
select new XElement(ns + "UpdateRegisters",
new XElement(ns + "RegID",
new XAttribute("ID", registers.IndexOf(reg).ToString().PadLeft(2, '0'))
)
)
)

是否可以创建具有多个 RegID 的唯一 UpdateRegisters 元素。如果没有更新寄存器,则不应存在任何 UpdateRegisters 元素。

最佳答案

你可以这样做:

var result=new XElement(ns + "SpecialRegisters");
var updateRegister=register.Where(e=>e.IsUpdateRegister);// To not repeat the same query twice
if(updateRegister.Count()>0)
{
result.Add( new XElement(ns + "UpdateRegisters",
updateRegister.Select((e,i)=> new XElement(ns + "RegID",i));
}

更新

如果你想在同一条语句中完成所有操作,那么你可以这样做:

 var updateRegister=register.Where(e=>e.IsUpdateRegister);// To not repeat the same query twice
var result=new XElement(ns + "SpecialRegisters", updateRegister.Any()?
new XElement(ns + "UpdateRegisters", updateRegister.Select((e,i)=> new XElement(ns + "RegID",i)):null );

我的解决方案基于你的 (miguelmpn)

速度并不重要,因为我正在保存一个简单的小文件..

new XElement(ns + "SpecialRegisters", Registers.Registers.Singleton.Any(x => x.IsUpdateRegister) ?
new XElement(ns + "UpdateRegisters", Registers.Registers.Singleton.Where(e => e.IsUpdateRegister).Select((e, i)=> new XElement(ns + "RegID", i))) : null)

关于c# - Linq to XML 创建具有唯一父元素的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40873194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com