Primo Chalice Ответов: 1

Как отсортировать элемент 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

Томас уже дал ответ, но на будущее: вы можете установить точки останова в лямбдах. Это позволит вам изучить вызов подстроки с помощью отладчика.

1 Ответов

Рейтинг:
1

Thomas Daniels

Второй аргумент подстроки таков length, но вы передаете конечный индекс.