我正在尝试向 XML 文件添加一些条目:
foreach(var talkNumber in listNumbers)
{
var newElem = new XElement("PublicTalk",
new XAttribute("Number", talkNumber),
new XAttribute("Excluded", false),
new XAttribute("ExcludedFromDate", "1900-01-01"),
new XAttribute("Note", ""),
new XAttribute("TimesHeard", 0),
new XAttribute("LastHeard", "1900-01-01")
);
ptLangInfo.Add(newElem);
}
XML
<?xml version="1.0" encoding="utf-8"?>
<PublicTalkTitles>
<!-- English -->
<eng>
<PublicTalk Number="21" Excluded="false" ExcludedFromDate="1900-01-01" Note="" TimesHeard="1" LastHeard="2023-10-15" />
<PublicTalk Number="1" Excluded="false" ExcludedFromDate="1900-01-01" Note="" TimesHeard="0" LastHeard="1900-01-01" />
<PublicTalk Number="2" Excluded="false" ExcludedFromDate="1900-01-01" Note="" TimesHeard="0" LastHeard="1900-01-01" />
<PublicTalk Number="3" Excluded="false" ExcludedFromDate="1900-01-01" Note="" TimesHeard="0" LastHeard="1900-01-01" />
</eng>
</PublicTalkTitles>
如您所见,问题是我想以正确的数字顺序将这些新项目添加到现有项目中。它们被添加到底部。
在我的代码片段中ptLangInfo
是eng
元素。
该方法
XContainer.Elements()
返回一个IEnumerable<XElement>
而不是一个IList<XElement>
。因此,没有内置log(n)
方法可以使用二分搜索将元素插入到子元素的枚举中,并假设它已经排序。因此我建议事后对它们进行排序:
演示小提琴在这里。