簡體   English   中英

如何使用linq將數據從xml提取到xml

[英]how take data from xml using linq to xml

我需要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

嘗試:

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

試試這個,它將返回201、202和203

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

您可以使用以下代碼

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

它將從節點СуммаВсегоСначалаРасчетногоПериода中選擇值並將其放在列表中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM