2013-07-15 35 views
1

我有一个XElement对象,该对象具有下面的结构。 如何从TestResults根节点中选择DataPointValue属性不同的所有CalcConceptId子节点,并将它们作为XElement存储在数组/列表中?我希望能够将每个孩子存储为另一个XElement,这样我就可以遍历它们并从每个孩子中取出SeriesAsOfDate和数据节点。如何获取子节点并将它们从父节点分组

<TestResults RSSD="123456"> 
    <CalcConceptId Id="110" DataPointValue="10"> 
    <SeriesAsOfDate Value="2013-07-10T00:00:00"> 
     <Data AsOfDate="7/10/2013" ExpectedValue="1" /> 
     <Data AsOfDate="7/3/2013" ExpectedValue="14" /> 
     <Data AsOfDate="6/26/2013" ExpectedValue="55" /> 
    </SeriesAsOfDate> 
    </CalcConceptId> 
    <CalcConceptId Id="110" DataPointValue="20"> 
    <SeriesAsOfDate Value="2013-07-10T00:00:00"> 
     <Data AsOfDate="7/10/2013" ExpectedValue="4" /> 
     <Data AsOfDate="7/3/2013" ExpectedValue="34" /> 
     <Data AsOfDate="6/26/2013" ExpectedValue="1" /> 
    </SeriesAsOfDate> 
    </CalcConceptId> 
</TestResults> 

回答

1

我想你想所有DataPointValue分组的CalcConceptId节点,但它是一个有点不清楚什么是“凡DataPointValue是不同”的意思。

反正这里是我想你想...

var calcConceptIdGroupedByDataPointValue = 
     doc.Descendants("CalcConceptId") 
      .GroupBy(calcConceptId => calcConceptId.Attribute("DataPointValue")); 
0

我不是100%肯定......但如果我得到你所问的,你在找什么?

//assuming the XElement is called Data: 
var result = 
    data.Elements().GroupBy(x => int.Parse(x.Attribute("DataPointValue"))) 
     .Select(g => g.First());