首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用LINQ在XML文件中查找对象

用LINQ在XML文件中查找对象
EN

Stack Overflow用户
提问于 2019-02-22 02:39:00
回答 1查看 44关注 0票数 1

我正在对学生做CRUD,我试图找到一个有LINQ的学生,但我不想使用列表,所以我想直接处理XML文件。我该怎么做呢?

我的XML文件是:

代码语言:javascript
复制
<?xml version="1.0"?>
<ArrayOfStudent xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Student>
      <IDstudent>56</IDstudent>
      <Name>da</Name>
      <Surname>he</Surname>
  </Student>
</ArrayOfStudent>

它将我的XML加载到列表中并执行LINQ,但我想以一种有效的方式来完成它。

代码语言:javascript
复制
    public Student FindStudent(string id)
    {
        List<Student> LStudent = GetAll();
        Student student = LStudent.Where(e => e.IDstudent == id).FirstOrDefault();
        return student;

    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-22 04:32:03

您可以查看如何加载到xDocument中,然后使用Linq:

代码语言:javascript
复制
using System.Xml.Linq;
using System.Linq;

class Program
{
    public static string FindStudent(XDocument xDoc, string id)
    {
        //this gets the list of Student elements in the document
        var students = xDoc.Elements().First().Elements("Student");

        //this gets the one with the requested id
        //throws an 'InvalidOperationException' if 0 OR more than 1 element found
        var studentById = students.Single(c => c.Element("IDstudent").Value == id);

        //return a string that you already are able to transform into a Student object??
        return studentById.ToString();  
    }

    static void Main(string[] args)
    {
        //Load into an xDocument from file
        XDocument xDoc = XDocument.Load(@"Path\To\Test.xml");

        Console.WriteLine(FindStudent(xDoc, "3"));
        Console.ReadLine();
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54814066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档