我怎样才能从LINQ中对XAttribute值进行子串

时间:2012-01-10 16:54:15

标签: c# xml linq

我有一些丑陋的xml(如果我可以改变的话)来找我,我需要能够处理。我希望按XML中的特定属性进行分组以进行进一步处理。问题是某些属性有一个type =“A”,有些属性有type =“A1”,type =“A2”等等。我想要所有属性类型值以“A”开头的元素被归为一类。

这不起作用,我不知道要改变什么才能让它发挥作用:

    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>

1 个答案:

答案 0 :(得分:2)

如果没有编译器并在我的手机上输入,我会说你应该将0作为Substring的第一个参数传递,即Substring(0,1)