Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从父节点获取子节点并将其分组_C#_Xml_Linq_Linq To Xml - Fatal编程技术网

C# 如何从父节点获取子节点并将其分组

C# 如何从父节点获取子节点并将其分组,c#,xml,linq,linq-to-xml,C#,Xml,Linq,Linq To Xml,我有一个XElement对象,它的结构如下所示。 如何从TestResults根节点(其中DataPointValue属性不同)中选择所有CalcConceptId子节点,并将它们存储为数组/列表中的XElements?我希望能够将每个子节点存储为另一个XElement,这样我就可以循环遍历它们,并从每个子节点中提取系列sofdate和数据节点 <TestResults RSSD="123456"> <CalcConceptId Id="110" DataPointValu

我有一个
XElement
对象,它的结构如下所示。 如何从
TestResults
根节点(其中
DataPointValue
属性不同)中选择所有
CalcConceptId
子节点,并将它们存储为数组/列表中的
XElement
s?我希望能够将每个子节点存储为另一个
XElement
,这样我就可以循环遍历它们,并从每个子节点中提取
系列sofdate
和数据节点

<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>

我不是100%确定。。。但如果我得到了你的要求,你在找这个吗

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

我不是100%确定。。。但如果我得到了你的要求,你在找这个吗

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

我认为您希望所有CalcConceptId节点都按DataPointValue分组,但有点不清楚“DataPointValue在哪里不同”是什么意思

不管怎样,这就是我认为你想要的

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

我认为您希望所有CalcConceptId节点都按DataPointValue分组,但有点不清楚“DataPointValue在哪里不同”是什么意思

不管怎样,这就是我认为你想要的

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