Linq to XML запрос повторяет список строк - PullRequest
2 голосов
/ 16 марта 2010

У меня есть следующий класс

public class CountrySpecificPIIEntity
{
    public string Country { get; set; }
    public string CreditCardType { get; set; }
    public String Language { get; set; }
    public List<String> PIIData { get; set; }        
}

У меня есть следующий XML, который я хочу запросить с помощью Linq-to-xml и сформировать класс выше

            <?xml version="1.0" encoding="utf-8" ?>
            <piisettings>
              <piifilter country="DE" creditcardype="37" language="ALL" >
                <filters>
                  <filter>FIRSTNAME</filter>
                  <filter>SURNAME</filter>
                  <filter>STREET</filter>
                  <filter>ADDITIONALADDRESSINFO</filter>
                  <filter>ZIP</filter>
                  <filter>CITY</filter>
                  <filter>STATE</filter>
                  <filter>EMAIL</filter>
                </filters>
              </piifilter>
              <piifilter country="DE" creditcardype="37" Language="en" >
                <filters>
                  <filter>EMAIL</filter>
                </filters>
              </piifilter>
            </piisettings>

Я использую следующий запрос, но у меня проблемы с последним атрибутом, т. Е. PIIList.

            var query = from pii in xmlDoc.Descendants("piifilter")
            select new CountrySpecificPIIEntity
            {
               Country = pii.Attribut("country").Value,
               CreditCardType = pii.Attribute("creditcardype").Value,
               Language = pii.Attribute("Language").Value,
               PIIList = (List<string>)pii.Elements("filters")
            };

            foreach (var entity in query)
            {
            Debug.Write(entity.Country);
            Debug.Write(entity.CreditCardType);
            Debug.Write(entity.Language);
            Debug.Write(entity.PIIList);
            }

Как получить запрос на возврат списка для гидратации в свойство PIIList.

Ответы [ 2 ]

4 голосов
/ 16 марта 2010
var query = from pii in xmlDoc.Descendants("piifilter")
select new CountrySpecificPIIEntity
{
   Country = pii.Attribut("country").Value,
   CreditCardType = pii.Attribute("creditcardype").Value,
   Language = pii.Attribute("Language").Value,
   PIIList = pii.Elements("filters").Select(xe => xe.Value).ToList();
};
0 голосов
/ 16 марта 2010

Я не уверен, вы можете проверить определение класса один раз, чтобы проверить, если?

public List<String> PIIList { get; set; }

если это правильно, попробуйте следующее:

select new CountrySpecificPIIEntity
{
 Country = pii.Attribute("country").Value,
 CreditCardType = pii.Attribute("creditcardype").Value,
 Language = pii.Attribute("Language").Value,
 PIIList = pii.Elements("filters").Cast<string>().ToList()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...