2010-01-13 3 views
1

У меня есть ряд связанных вопросов, но я разберу вопросы на отдельные сообщения.LINQ to XML - выбор XML для строго типизированного объекта

Мой XML является <Person>.....<Skills><Skill>Resus<Skill></Skills></Person>

Мой код:

var products1 = from prd in xDoc.Descendants("Person") 

select new BusinessEntityLayer.Personnel 
{ 
    PayrollNo = (String)prd.Element("PayrollNumber"), 
    FirstName = (String)prd.Element("Name"), 
    LastName = (String)prd.Element("Surname"), 
    StreetAddress = (String)prd.Element("StreetAddress"), 
    Suburb = (String)prd.Element("Suburb"), 
    HomePhone = (String)prd.Element("HomePhone"), 
    MobilePhone = (String)prd.Element("MobilePhone"), 
    PagerNumber = (String)prd.Element("PagerNumber"), 
    Email = (String)prd.Element("Email"), 
    RecordType = (String)prd.Element("RecordType"), 
    Skills = (List<String>)prd.Element("Skills") 

класс Мой персонал сильно типизированных. Все это отлично работает независимо от коллекции Skills. Навыки - List<Skill>, но мой код не компилируется с ошибкой - XLInq.Element - Generic.List ... и я не могу использовать String[] (рефакторинг моего бизнес-класса), поскольку получаю тот же результат.

Какие стратегии используют люди здесь?

ответ

1

Я думаю, вы должны быть в состоянии сделать что-то вроде этого:

Skills = prd.Descendants("Skill").Select(e => new Skill(e.Value)).ToList(), 
+0

Спасибо - что у меня все дальше вниз по дорожке! – mttumbledown

+0

Моя проблема интеграции теперь заключается в том, что вверх по потоку я должен предоставить свой XML из набора данных (из моих рук, я боюсь!), Как добавить общую коллекцию в столбец Dataset>? dc = new DataColumn («Навыки», System.Type.GetType?); dtData.Columns.Add (dc); Я могу извлечь свой XML из ds.GetXML(), поэтому я надеюсь, что он будет десериализован правильно. Если я добавлю его как объект, я получаю проблемы с сериализацией. – mttumbledown