使用 LINQ 获取多个节点值
本文关键字:节点 LINQ 获取 使用 | 更新日期: 2023-09-27 18:31:52
假设你有以下XML结构。
<Class>
<Students>
<Student>
<StudentNo>555</StudentNo>
<Firstname>Joe</Firstname>
<Lastname>Smith</Lastname>
</Student>
<Student>
<StudentNo>222</StudentNo>
<Firstname>Smith</Firstname>
<Lastname>Joe</Lastname>
</Student>
<Students>
</Class>
并且您希望使用 linq 获取所有名字和姓氏。现在我得到了以下内容
foreach (XElement x in data.Descendants("Student").SelectMany(e => data.Descendants("Firstname")))
{
Console.WriteLine(x.Value);
}
但是我怎么能得到姓氏呢?
您可以使用匿名类型执行此操作:
var query=data.Descendants("Student")
.Select(s=> new { FirstName=s.Element("FirstName").Value,
LastName=s.Element("Lastname").Value});
或者,您可以创建自定义类并保存结果:
var query=data.Descendants("Student")
.Select(s=> new Student{ FirstName=s.Element("FirstName").Value,
LastName=s.Element("Lastname").Value});
你可以这样写:
var firstnames = data.Descendants("Student").Select(x => x.Firstname);
var lastnames = data.Descendants("Student").Select(x => x.Lastname);
或
var firstAndLastnames = data.Descendants("Student").Select(x => new { Firstname = x.Firstname, Lastname = x.Lastname });