Estou tentando adicionar algumas entradas a um arquivo 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>
O problema, como você pode ver, é que quero adicionar esses novos itens na ordem numérica correta aos existentes. Eles são adicionados ao fundo.
No meu trecho de código ptLangInfo
está o eng
elemento.
O método
XContainer.Elements()
retorna umIEnumerable<XElement>
não umIList<XElement>
. Como tal, não hálog(n)
uma maneira integrada de inserir um elemento na enumeração de elementos filhos usando uma pesquisa binária e assumindo que já esteja classificado.Portanto, eu recomendo apenas classificá-los depois:
Violino de demonstração aqui .