Я немного застрял и не могу думать прямо, может быть, вы мне поможете.Linq to XML GroupBy then OrderBy
Мой .xml выглядит следующим образом:
<RSA>
<Size>
<Name>0005-24</Name>
<IDs>
<ID>0003</ID>
<ID>0004</ID>
<ID>0005</ID>
<ID>0006</ID>
<ID>0007</ID>
<ID>0008</ID>
<ID>0010</ID>
<ID>0009</ID>
</IDs>
</Size>
<Size>
<Name>0015-24</Name>
<IDs>
<ID>0003</ID>
<ID>0004</ID>
<ID>0005</ID>
<ID>0006</ID>
<ID>0007</ID>
<ID>0008</ID>
<ID>0010</ID>
<ID>0009</ID>
</IDs>
</Size>
<Size>
<Name>003-12</Name>
<IDs>
<ID>0003</ID>
<ID>0004</ID>
<ID>0005</ID>
<ID>0006</ID>
<ID>0007</ID>
<ID>0008</ID>
<ID>0010</ID>
<ID>0009</ID>
</IDs>
</Size>
</RSA>
И идентификаторы должны быть для того, чтобы читаемости.
Edit:
<Size>
<Name>0005-24</Name>
<IDs>
<ID>0003</ID>
<ID>0004</ID>
<ID>0005</ID>
<ID>0006</ID>
<ID>0007</ID>
<ID>0008</ID>
<ID>0010</ID> <-----
<ID>0009</ID> <-----
</IDs>
</Size>
Таким образом, они должны быть в порядке.
[...]
<ID>0009</ID> <-----
<ID>0010</ID> <-----
[...]
Я пробовал много разных подходов, но мой последний закончился следующим кодом, который тоже не работает.
XElement root = XElement.Load(filePath + fileName);
var compIDs = root.Elements()
.GroupBy(r => r.Element("Name").Value)
.OrderBy(xn => xn.Elements("RSA").Elements("Size").Elements("IDs").Elements("ID").ToString())
.ToArray();
root.ReplaceAll(compIDs);
root.Save(filePath + fileName);
Я искал SO заранее, но не нашел ничего полезного, или это только я, который не понимает. ;)
Вопрос: Как сгруппировать записи по их размеру, привести идентификаторы в порядок и заменить их в XML-файле?
Заранее благодарен!
Почему вы хотите группировать по размеру? они уже сгруппированы по размеру в XML. Каков ожидаемый результат? –
Можете ли вы уточнить, что вы не работаете? Выдает ли ошибка?Если нет, то какой результат? – Rob
И каков ожидаемый результат? например анонимного типа или какого-то нового «XElement». –