如何从LINQ子字符串XAttribute值

本文关键字:字符串 XAttribute LINQ | 更新日期: 2023-09-27 18:19:51

我收到了一些丑陋的xml(如果我能更改的话,我会的),我需要能够处理这些xml。我想按XML中的特定属性进行分组,以便进行进一步处理。问题是,有些属性的类型="a",有些属性类型="A1"、类型="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>

如何从LINQ子字符串XAttribute值

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