Bloqueada Linq query not returning correct elements

  • jueves, 12 de julio de 2012 1:39
     
     

    Example XML:

    <Name>NAME1

    <Address>ADDRESS1</Address>

    <Address>ADDRESS2</Address>

    </Name>

    How do I return the 2 addresses based on the NAME1 element?  I want to use LINQ ..

    Currently I have this code:

    var names = 
    from name in doc.Descendants("Name")
    select name;

    foreach (var name in names)
    {
    Console.WriteLine("{0}", name.Value.ToString());
    var items =
    from item in doc.Elements("MNEMONIC")
    where (string)item.Parent.Attribute("Name") == name.Value.ToString()
    select item;

    foreach (var item in items)
    {
    Console.WriteLine("{0}", item.Value.ToString());
    }
    }

    which doesn't work.. Any suggestions?

    Thanks

Todas las respuestas

  • miércoles, 18 de julio de 2012 13:08
     
     

    Hi

    Is  it the original xml syntax you are using ? If not can you post your sample xml file with correct syntax and some more entries. So that  it would be more easier to correct your issue. I tried with some other xml file, it may give you some hints.

    XML File:

    <Employee>
    <Name Value="NAME1">

    <Address>ADDRESS1</Address>

    <Address>ADDRESS2</Address>

    </Name>

    <Name Value="NAME2">

    <Address>ADDRESS3</Address>

    <Address>ADDRESS4</Address>

    </Name>
    </Employee>

     Sample code:

     XDocument oDocument = XDocument.Load(sPath);

                      IEnumerable<XElement> xElementList = from tmpElement in oDocument.Descendants("Name")
                                                  where tmpElement.Attribute("Value").Value.Equals("NAME1")
                                                  select tmpElement;

                   List<XNode> lstVal = new List<XNode>();
           lstVal = xElementList.Elements("Address").Nodes().ToList();
                 


    Regards

    Dominic


    If a post answers your question, please click "Mark As Answer" on that post and "Mark as Helpful