2010-01-13 70 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") 

我的人事類是強類型。除了技能集合之外,它完全可以工作。技能是List<Skill>,但我的代碼不會編譯時發生錯誤 - XLInq.ElementGeneric.List ...我也不能使用String[](重構我的業務類),因爲我得到的結果相同。

人們在這裏使用什麼策略?

回答

1

我想你應該能夠做這樣的事情:

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

謝謝 - 已讓我進一步下跌的軌道! – mttumbledown 2010-01-13 11:39:49

+0

現在我的整合問題是,在上游,我需要從數據集中提供我的XML(出於我的擔心!),如何將一個通用集合添加到數據集列? dc = new DataColumn(「Skills」,System.Type.GetType?); dtData.Columns.Add(dc); 我能夠從ds.GetXML()派生我的XML,所以我希望它得到正確的反序列化。如果我將它作爲一個對象添加,我會遇到序列化問題。 – mttumbledown 2010-01-13 11:50:29