Как отсортировать элемент xelement в C# на основе его дочерних значений?
У меня есть XML:
<Articles> <Article id="article_1-1" file="article_1-1.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_1-3" file="article_1-3.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_4-1" file="article_4-1.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_4-2" file="article_4-2.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_4-3" file="article_4-3.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_5-1" file="article_5-1.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_1-2" file="article_1-2.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_2-1" file="article_2-1.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_2-2" file="article_2-2.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_1-4" file="article_1-4.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_13-1" file="article_13-1.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_6-1" file="article_6-1.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_6-2" file="article_6-2.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_6-3" file="article_6-3.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_10-1" file="article_10-1.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_10-2" file="article_10-2.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_11-1" file="article_11-1.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_11-2" file="article_11-2.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_14-1" file="article_14-1.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_14-2" file="article_14-2.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_15-1" file="article_15-1.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_15-2" file="article_15-2.xml"> <title ref="headline">Title value</title> </Article> <Article id="article_16-1" file="article_16-1.xml"> <title ref="headline">Title value</title> </Article> </Articles>
Я хочу отсортировать это в порядке возрастания, и я не могу этого сделать.
Я получаю ошибку
Цитата:Система.Исключение argumentoutofrangeexception: индекс и длина должны указывать на позицию в строке.
Наименование параметра: длина
Что я уже пробовал:
xrepdoc.Root.Element(replicaNamespace + "Articles").Elements(replicaNamespace + "Article") .OrderBy(el => Int32.Parse(el.Attribute("id").Value.Substring(el.Attribute("id").Value.IndexOf("_"), el.Attribute("id").Value.IndexOf("-")))) .ThenBy(el => Int32.Parse(el.Attribute("id").Value.Substring(el.Attribute("id").Value.IndexOf("-") + 1))) .ToList();
lmoelleb
Томас уже дал ответ, но на будущее: вы можете установить точки останова в лямбдах. Это позволит вам изучить вызов подстроки с помощью отладчика.