2015-02-06 47 views
2

我需要取值爲xml節點<СуммаВсегоСначалаРасчетногоПериода> 201,201值。如何從XML使用LINQ到XML數據

我嘗試使用下面的代碼藉此值:

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

回答

0

嘗試:

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

無法將表達式類型XElement轉換爲返回類型bool。 .Where(i => i.Descendants(「КодСтроки」)。FirstOrDefault(x => x.Value ==「202」)) – 2015-02-06 14:30:51

0

試試這個,它會返回201,202和203

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

您可以使用下面的代碼

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

它會選擇СуммаВсегоСначалаРасчетногоПериода節點的值,並把它放在一個列表