我是LINQ的新手。我需要使用xml中的信息填充以下类的List
。
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>
标签。此外,是否有填充List', i.e map
人to
实例`标记的快捷方式。
答案 0 :(得分: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();
答案 1 :(得分:2)
同意@Hasan Khan的答案,但您还需要在您的人员类中公开您的字段,以便您可以实例化它们。您可以使用自动属性,如下所示:
class Person
{
public int Id { get; set; }
public string Address { get; set; }
public string Name { get; set; }
}
答案 2 :(得分:0)
这里有一个关于如何使用Linq To XML
的教程