我使用XElement类动态生成XML文件。感兴趣的序列如下所示:

<Actions>
    <Action Id="35552" MailRuId="100000">
      <ActionTypeId>2</ActionTypeId>
      <GenreTypeId>16</GenreTypeId>
    </Action>
    <Action Id="36146" MailRuId="100001">
      <ActionTypeId>7</ActionTypeId>
      <GenreTypeId>2</GenreTypeId>
      <ActionDate Id="127060" FreeTicketsCount="26" ReservedTicketsCount="3">06.09.2013 18:00:00</ActionDate>
    </Action>
</Actions>


如果“ ActionDate”子节点没有退出,我想删除“ Action”节点。

生成XML文件的代码如下:

var actionElement = new XElement("Action",
    new XElement("ActionTypeId", first.ActionTypeId),
    new XElement("GenreTypeId", first.GenreTypeId));

IEnumerable<XElement> seanceElements = infos
    .GroupBy(ti => ti.ActionDate)
    .Select(CreateSeanceElement);

actionElement.Add(seanceElements);


CreateSeanceElement方法创建“ ActionDate”节点,但是正如我已经说过的那样,它可以被创建或不能被创建。

最佳答案

选择所有没有ActionDate元素(即为null)的元素,并将其从action元素中删除:

actions.Elements("Action")
       .Where(a => a.Element("ActionDate") == null)
       .Remove();


顺便说一句,如果要生成XML,请考虑不要添加此类元素。比添加和删除更好。

09-06 04:56