【问题标题】:Trying to add new XElement to specifc node in tree based on the nodes attribute value尝试根据节点属性值将新的 XElement 添加到树中的特定节点
【发布时间】:2021-01-25 04:40:40
【问题描述】:

在下面的 C 语言代码中,它总是将 XElements 添加到树中的第一个前提节点中

但是我需要像 WHERE 一样添加,以告诉 Add 将数据作为具有特定 Key 属性值的 Premise 的子级。不知道如何在语法上执行此操作,在此先感谢...

doc.Element("Bill").Element("PremiseList").Element("Premise").Element("MeterList").Add
                         (
                             new XElement
                                 (
                                     "Meter", new XElement("MeterId", customerBillActivateModel.CustomerPremiseMeterProviders.FirstOrDefault(x => x.PremiseMeterProviderId == meter.Key.PremiseMeterProviderId).D3001_MeterId),
                                     new XElement("RSA", meter.Key.RSA),
                                     new XElement("PhysicalMeterSize", meter.Key.D3003_PhysicalMeterSize.ToString()),
                                     new XElement("ChargeableMeterSize", meter.Key.D3002_ChargeableMeterSize.ToString()),
                                     new XElement("PrevReadDate", meter.Key.PrevReadDate.ToShortDateString()),
                                     new XElement("PrevRead", meter.Key.PrevRead),
                                     new XElement("LastReadDate", meter.Key.LastReadDate.ToShortDateString()),
                                     new XElement("LastRead", meter.Key.LastRead),
                                     new XElement("ADC", meter.AverageDailyConsumption)
                                 )
                          );

【问题讨论】:

  • 我更接近了...... doc.Element("Bill").Element("PremiseList").Descendants("Premise").Where(n => n.Attribute( "Key").Value == Meter.Key.PremiseProviderId.ToString()).Element("MeterList").Add 但是现在 "Element("MeterList").Add" - 最后一部分需要修改 - 我认为是正确的跟踪它的关闭

标签: c# asp.net-mvc-4 linq-to-xml


【解决方案1】:

知道了,这是所需的解决方案...

                                            #region xml Meter
                doc.Element("Bill").Element("PremiseList").Descendants("Premise").Where(n => n.Attribute("Key").Value == meter.Key.PremiseProviderId.ToString()).Elements("MeterList").FirstOrDefault().Add
                 (
                     new XElement
                         (
                             "Meter", new XAttribute("MeterId", customerBillActivateModel.CustomerPremiseMeterProviders.FirstOrDefault(x => x.PremiseMeterProviderId == meter.Key.PremiseMeterProviderId).D3001_MeterId),
                             new XElement("RSA", meter.Key.RSA),
                             new XElement("PhysicalMeterSize", meter.Key.D3003_PhysicalMeterSize.ToString()),
                             new XElement("ChargeableMeterSize", meter.Key.D3002_ChargeableMeterSize.ToString()),
                             new XElement("PrevReadDate", meter.Key.PrevReadDate.ToShortDateString()),
                             new XElement("PrevRead", meter.Key.PrevRead),
                             new XElement("LastReadDate", meter.Key.LastReadDate.ToShortDateString()),
                             new XElement("LastRead", meter.Key.LastRead),
                             new XElement("ADC", meter.AverageDailyConsumption)
                         )
                  );
                #endregion xml

【讨论】:

    猜你喜欢
    • 2012-02-10
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多