C# 使用LINQ获取多个节点值

C# 使用LINQ获取多个节点值,c#,.net,linq,C#,.net,Linq,假设您有以下XML结构 <Class> <Students> <Student> <StudentNo>555</StudentNo> <Firstname>Joe</Firstname> <Lastname>Smith</Lastname> </Student> <Student> &

假设您有以下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>

但我怎样才能得到姓氏呢

您可以使用匿名类型执行此操作:

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);


您的示例XML有许多错误,为了让人们更容易回答您的问题,您应该发布一个工作示例。
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 });