2012-01-10 2 views
0

У меня есть уродливый xml (если бы я мог изменить, я бы) пришел ко мне, чтобы мне нужно было обработать. Я хотел бы сгруппировать по определенному атрибуту в XML для дальнейшей обработки. Проблема в том, что некоторые атрибуты имеют тип = «A», а некоторые имеют тип = «A1», type = «A2» и т. Д. Я хочу, чтобы все элементы, имеющие значение типа атрибута, начинающееся с «A», группироваться вместе.Как я могу подстроить значение XAttribute из LINQ

Это не работает, и я не знаю, что нужно изменить, чтобы заставить его работать:

var result = from ele in xdoc.Descendants(Namespace + "item") 
       let item= ele.Attribute("type").Value.Substring(1,1) 
       group ele by item into grp 
       select grp; 

Когда я снимаю подстроку это работает отлично, но, очевидно, не группа, как я хочу.

Ошибка:

Error has been thrown by the target of an invocation 

Пример XML:

<items> 
<item type="A" position="0"> 
    <itemvalue>10</itemvalue> 
</item> 
    <item type="A1" position="1"> 
    <itemvalue>20</itemvalue> 
</item> 
    <item type="A2" position="2"> 
    <itemvalue>30</itemvalue> 
</item> 
    <item type="B" position="0"> 
    <itemvalue>10</itemvalue> 
    </item> 
    <item type="B1" position="1"> 
    <itemvalue>20</itemvalue> 
    </item> 
    <item type="B2" position="2"> 
    <itemvalue>30</itemvalue> 
</item> 
</items> 

ответ

2

Без компилятора в моем распоряжении и печатаю это на моем мобильном телефоне, я бы сказал, что вы должны передать 0 в качестве первого аргумента Substring, т.е. Substring(0,1).

+0

О, черт возьми, за то, что ты выглядишь как полный идиот ... это было полностью благодаря @afrischke. Я разработчик sql и даже не думал о позиции 0 в подстроке. – scarpacci

+0

Не беспокойтесь, я сделал (и, конечно же, сделаю) гораздо более смущающие ошибки. – afrischke

Смежные вопросы