如何使用linq从xml获取数据到xml

时间:2015-02-06 14:16:27

标签: c# xml linq

我需要获取xml节点的值<СуммаВсегоСначалаРасчетногоПериода> 201,201值。

我尝试使用以下代码获取此值:

C#

var attrArr = (_doc.Root.Descendants("Раздел2РасчетПоТарифуДопТарифу")
    .Where(i => i.Descendants("КодСтроки").FirstOrDefault().Value == "201")
    .Select(i => i.Descendants("СуммаВсегоСначалаРасчетногоПериода").FirstOrDefault().Value))
    .FirstOrDefault();

但我只得到第一个值(201)。

如果我输入i => i.Descendants("КодСтроки").FirstOrDefault().Value == "202",则值= 0

XML

<Раздел2РасчетПоТарифуДопТарифу>
        <Раздел2_1_РасчетСВпоТарифу>
          <КодТарифа>03</КодТарифа>
          <НаОбязательноеПенсионноеСтрахование>
            <ВыплатыИвознаграждения_1966старше>
              <КодСтроки>201</КодСтроки>
              <РасчетСумм>
                <СуммаВсегоСначалаРасчетногоПериода>201</СуммаВсегоСначалаРасчетногоПериода>
                <СуммаПоследние1месяц>0.00</СуммаПоследние1месяц>
                <СуммаПоследние2месяц>0.00</СуммаПоследние2месяц>
                <СуммаПоследние3месяц>0.00</СуммаПоследние3месяц>
              </РасчетСумм>
            </ВыплатыИвознаграждения_1966старше>
            <ВыплатыИвознаграждения_1967моложе>
              <КодСтроки>202</КодСтроки>
              <РасчетСумм>
                <СуммаВсегоСначалаРасчетногоПериода>202</СуммаВсегоСначалаРасчетногоПериода>
                <СуммаПоследние1месяц>0.00</СуммаПоследние1месяц>
                <СуммаПоследние2месяц>0.00</СуммаПоследние2месяц>
                <СуммаПоследние3месяц>0.00</СуммаПоследние3месяц>
              </РасчетСумм>
            </ВыплатыИвознаграждения_1967моложе>
            <ВыплатыИвознаграждения_ВременноИГ>
              <КодСтроки>203</КодСтроки>
              <РасчетСумм>
                <СуммаВсегоСначалаРасчетногоПериода>203</СуммаВсегоСначалаРасчетногоПериода>
                <СуммаПоследние1месяц>0.00</СуммаПоследние1месяц>
                <СуммаПоследние2месяц>0.00</СуммаПоследние2месяц>
                <СуммаПоследние3месяц>0.00</СуммаПоследние3месяц>
              </РасчетСумм>

我需要取值201,202和203

3 个答案:

答案 0 :(得分:0)

尝试:

var attrArr = (_doc.Root.Descendants("Раздел2РасчетПоТарифуДопТарифу")
.Where(i => i.Descendants("КодСтроки").FirstOrDefault(x => x.Value == "202"))
.Select(i => i.Descendants("СуммаВсегоСначалаРасчетногоПериода").FirstOrDefault().Value)).FirstOrDefault();

答案 1 :(得分:0)

尝试这个,它将返回201,202和203

string str = ....
var x = XElement.Parse(str);    
var result = x.Descendants("СуммаВсегоСначалаРасчетногоПериода")
   .Select(xx => xx.Value)
   .ToArray();

答案 2 :(得分:0)

您可以使用以下代码

var xyz = (from item in _doc.Elements("РасчетСумм")
select item.Element("СуммаВсегоСначалаРасчетногоПериода").Value).ToList();

它将从节点中选择值СуммаВсегоСначалаРасчетногоПериода并将其放入列表中