Выбор значений атрибутов в список <string> - PullRequest
0 голосов
/ 19 марта 2011

Учитывая следующий XML, мне нужно иметь возможность получить имя пользователя в категории Household_Services.

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <category id="Household_Services">
    <users>
      <add name="ESB"/>
      <add name="BordGais"/>
      <add name="Eircom"/>
    </users>
  </category>
  <category id="Financial_Accounts">
    <users>
      <add name="BankOfIreland"/>
      <add name="AIB"/>
    </users>
  </category>
  <category id="Health_Records">
    <users>
      <add name="VHI"/>
      <add name="IrishLife"/>
    </users>
  </category>
</root>

Самое близкое, что я могу получить -

string category = "Household_Services";

var users = from n in xe.Elements("category")
            where (string)n.Attribute("id") == category
            select n.Element("users").Elements("add").Attributes("name");

Это дает мне IEnumerable<XAttribute>, но мне нужно List<string>.

Есть идеи, что мне нужно изменить?

Спасибо

David

Ответы [ 2 ]

2 голосов
/ 19 марта 2011

изменить эту строку

select n.Element("users").Elements("add").Attributes("name");

до

select n.Element("users").Elements("add").Attributes("name").Select(a => a.ToString()).ToList();
1 голос
/ 19 марта 2011

Вы должны получить доступ к свойству Value вашего XAttribute.

либо

var attributes = from n in xe.Elements("category")
        where (string)n.Attribute("id") == category
        from attribute in n.Element("users").Elements("add").Attributes("name")
        select attribute.Value
var users = attributes.Select(x => x.Value);

, либо

var users = from n in xe.Elements("category")
        where (string)n.Attribute("id") == category
        from attribute in n.Element("users").Elements("add").Attributes("name")
        select attribute.Value

в этом трюке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...