Linq XML查询在属性中具有特定值的父级后代

问题描述 投票:2回答:2

我需要一些有关LINQ to XML的帮助。我有以下XML;

<GcctTestData>
  <TestDriveRequest Record="1">
    <element name="Time Zone">(GMT+05:30)</element>
    <element name="Requested Dealer">Concorde</element>
    <element name="Model Year">1999</element>
    <element name="Make">Tata</element>
    <element name="Model/Vehicle Line">Indica</element>
  </TestDriveRequest>
  <TestDriveRequest Record="2">
    <element name="Time Zone">(GMT+05:30)</element>
    <element name="Requested Dealer">Kun"</element>
    <element name="Model Year">2020"</element>
    <element name="Make">BMW"</element>
    <element name="Model/Vehicle Line">3-series</element>
  </TestDriveRequest>
  <TestDriveRequest Record="3">
    <element name="Time Zone">(GMT+05:30)</element>
    <element name="Requested Dealer">KUN Hyundai</element>
    <element name="Model Year">2001</element>
    <element name="Make">Hyundai</element>
    <element name="Model/Vehicle Line">Verna</element>
  </TestDriveRequest>
</GcctTestData>

我尝试过如下操作:

IEnumerable<XElement> xElements =
                from element in root.Elements("TestDriveRequest")
                where element.Attribute("Record").Value == "1"
                select element;

            foreach (XElement el in xElements.Descendants().Where(p => !p.HasElements))
            {
                int keyInt = 0;
                string keyName = el.Attribute("name").Value;

                while (keyValuePairs.ContainsKey(keyName))
                {
                    keyName = $"{el.Attribute("name").Value}_{keyInt++}";
                }
                keyValuePairs.Add(keyName, el.Value);
            }                

我必须获取具有记录值1的那个父对象的element的元素name属性值

但是linq查询没有获取它...

我需要一些有关LINQ to XML的帮助。我有以下XML; [[(GMT + 05:30)

c# linq linq-to-xml
2个回答
2
投票
您需要使用root.Descendants代替root.Elements。

0
投票
这就是我创建字典的方式:
© www.soinside.com 2019 - 2024. All rights reserved.