как выбрать элемент XElement и его дочерний элемент в одном запросе Linq

#linq-to-xml

#linq-to-xml

Вопрос:

Мне нужно выбрать родительский и дочерний элементы за один шаг, чтобы я мог получить их как IEnumerable и выполнить итерацию по ним

Я пробовал parent.descendantsandself, но не работает ни одна идея

 <MenuItem id="MyAccount" rmId="MyAccount" loc-attr="MyAccount,text" text="My Account" target="" display="true">
  <MenuItem id="MyProducts" rmId="MyProducts" loc-attr="MyProducts,text" text="My McAfee Products" target="" display="true" href="http://home.mcafee.com/root/myAccount.aspx" />
  <MenuItem id="MyProfile" rmId="MyProfile" loc-attr="MyProfile,text" text="Update McAfee Account Info" target="" display="true" href="https://home.mcafee.com/Secure/Protected/MyAccountInfo.aspx" />
  <MenuItem id="MyArSettings" rmId="MyArSettings" loc-attr="MyArSettings,text" text="My Auto-Renewal Settings" href="https://home.mcafee.com/Secure/Protected/AutoRenew.aspx" target="" display="true" />
</MenuItem>
  

Ответ №1:

Основываясь на предоставленной вами информации, я думаю, DescendantsAndSelf должно сработать, например, когда я пытаюсь

             XElement item = XElement.Parse(@"<MenuItem Id=""m1"">
  <MenuItem Id=""m2""></MenuItem>
  <MenuItem Id=""m3""></MenuItem>
</MenuItem>");
            foreach (XElement menu in item.DescendantsAndSelf())
            {
                Console.WriteLine("{0}", menu.Attribute("Id").Value);
            }
  

он красиво выводит идентификатор всех трех элементов:

 m1
m2
m3
  

Если у вас все еще есть проблемы с кодом, который не выполняет то, что вы хотите, тогда подумайте о том, чтобы показать нам достаточно этого кода, чтобы мы могли воспроизвести проблему.