c# - 如何使用 linq to xml 从 xml 中获取数据

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

最佳答案

尝试:

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

关于c# - 如何使用 linq to xml 从 xml 中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28367741/

相关文章:

c# - Mongodb In Query 对每条记录都有限制

c# - 如何将字符串解析为 Double

c# - 如何在Dapper中通过一条sql语句传递多条记录进行更新

java - 当切换到 Android 中的另一个 Activity 时应用程序停止

c++ - appendChild xml c++ 无法按需工作

xml - 我可以设置 XSD 以便 xs :enumeration is shared between two attributes with a different base type - xs:ID and xs:string

c# - 如何使用 LINQ to LDAP 获取事件目录中的用户列表?

c# - 为什么 CLR ThreadPool 工作线程使用 LIFO 顺序处理来自本地队列的任务?

c# - LINQ-To-SQL 如何防止 SQL 注入(inject)?

C# Linq 动态项属性