我在同一内容控件中有3个表,如何获取第一个表并将其删除?

我试过使用

SdtBlock ccWithTable = mainPart.Document.Body.Descendants<SdtBlock>().Where
                    (r => r.SdtProperties.GetFirstChild<Tag>().Val == tag).Single();

Table theTable = ccWithTable.Descendants<Table>().First();

ccWithTable.RemoveChild(theTable);


但这给我一个错误:


  指定的oldChild不是此元素的子级


我怀疑由于该表不是内容控件的子级,因此还有其他方法吗?

最佳答案

根据您的评论,我想您可以访问table对象,但它不是sdtblock的直接子对象,因此您无法使用ccWithTable.RemoveChild()方法将其删除(是的,它假定要删除的项目是一部分此元素的直接子元素)。

但是,如果可以访问表对象(子对象是子对象),则无需知道其父对象。
只需调用OpenXmlElement.Remove()方法:它将从其父级中删除该元素。

theTable.Remove();

10-06 06:55