2011-10-21 56 views
0

我是LINQ的新手。我需要用xml中的信息填充以下类的List使用LINQ来填充列表<object>来自xml

class Person 
{ 
    int id; 
    string name; 
    string address; 
} 

List<Person> people = new List<Person>(); 

什么是在LINQ中做到这一点的正确方法。

<Company> 
    ... 
    ...<!--Lot of items --> 
    ... 
    <People>  <!--People appears only once --> 
     <Instance> 
      <ID>1</ID> 
      <Name>NameA</Name> 
      <Address>AddressA</Address>   
     </Instance> 
     <Instance> 
      <ID>2</ID> 
      <Name>NameB</Name> 
      <Address>AddressB</Address>   
     </Instance> 
     .. 
     .. 
</People> 
</Company> 

我需要知道的LINQ表达的结构直接到达<People>标签。另外,是否有任何用于填写Instance`标签的快捷方式。

回答

7

我希望你知道你需要使你的领域(或更好地使他们的属性)作为公众能够填补对象的价值。您在类字段中缺少公共修饰符。

var doc = XDocument.Parse(xmlString); 
List<People> people = doc.Descendants("People") 
         .FirstOrDefault() 
         .Descendants("Instance") 
         .Select(p=> new Person() 
            { 
             ID = p.Element("ID").Value, 
             Name = p.Element("Name").Value, 
             Address=p.Element("Address").Value 
            }).ToList(); 
+0

'.ToList()'很棒!谢谢! – blitzkriegz

2

与@Hasan汗的答案达成一致的教程,但你也需要让你的领域在你的个人类公共所以你可以实例化它们。你可以使用自动属性,如下所示:

class Person 
    { 
     public int Id { get; set; } 
     public string Address { get; set; } 
     public string Name { get; set; } 
    }