使用LINQ来填充列表
问题描述:
我是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`标签的快捷方式。
答
我希望你知道你需要使你的领域(或更好地使他们的属性)作为公众能够填补对象的价值。您在类字段中缺少公共修饰符。
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();
答
与@Hasan汗的答案达成一致的教程,但你也需要让你的领域在你的个人类公共所以你可以实例化它们。你可以使用自动属性,如下所示:
class Person
{
public int Id { get; set; }
public string Address { get; set; }
public string Name { get; set; }
}
'.ToList()'很棒!谢谢! – blitzkriegz