如何将集合中的哈希集正确导出到 XML

How to export a hashset inside a collection to XML properly

我有一个 SQL 数据库 table,它连接另外两个 table。

课程(Table 1),学生(Table 2)

加入的 table 被称为 StudentCourses 看起来像: 复合主键由 2 列组成:StudentIDCourseID

当我通过 EDMX 将我的数据库添加到我的 C# 项目时,这个加入的 table 没有被添加。这在我的程序结束之前都是可以的,我需要将所有数据导出到 XML,包括一个名为 StudentCourses.xml.

的 XML 文件

我可以使用course.Students 属性(一个hashset)访问每个课程的学生列表,我可以使用student.Courses访问每个学生的课程列表属性(也是一个hashset)。

我试图在导出过程中使用 foreach loop 嵌套学生列表,但这是不允许的:

XDocument documentStudentCourses = new XDocument(
          new XDeclaration("1.0", "utf-8", "yes"),
          new XComment("Contents of StudentCourses table in CourseroomScheduler database"),
          new XElement("StudentCourses",
          from c in CoursesCollection // a List<Course> object
          select new XElement("Course",
          foreach (var student in sc.Students) { new XElement("StudentID", student.StudentID); }, // this is not allowed
          new XElement("CourseID", sc.CourseID))));

以这种方式访问​​ hashset 以导出到 XML 的最佳方式是什么?

我相信你想要的是以下内容。

var studentCourses = new XDocument(
    new XDeclaration("1.0", "utf-8", "yes"),
    new XComment("Contents of StudentCourses table in CourseroomScheduler database"),
    new XElement("StudentCourses",
        from c in CoursesCollection
        select new XElement("Course", from student in c.Students
                                      select new XElement("StudentID", student.StudentID))
    )
);

但它与 Hashsets 的关系并不比任何其他类型的 eumerable 多。