如何使用MySQL数据填充具有每个类项目的类列表的类列表?

时间:2019-03-22 03:12:11

标签: c# mysql list class

这是我在C#中拥有的类之一:

public class Courses
    {
        [DataMember]
        public string SchoolName { get; set; }
        [DataMember]
        public string MajorName { get; set; }
        [DataMember]
        public List<string> Course { get; set; }

        public Courses()
        {
            Course = new List<string>();
        }
    }

每个专业都有一个班级列表。

在我的数据库中,我有3张表格,分别列出了与外国人联系的学校,专业和课程。一个简单的SQL表可以读取给定的学校:

SELECT 
major.MajorName,
course.CourseName 
FROM school
INNER JOIN major ON major.MajorID = course.MajorID  
WHERE school.SchoolName = @SchoolName AND major.SchoolNameID = school.SchoolNameID GROUP BY major.MajorName;

因此,基于此,我希望数据如下。 (多个专业名称,每个专业都有多个课程)

MajorName   CourseName
Science      SC101
Science      SC102
Science      SC500
Math         MA100
Math         MA200
ENGLISH      EN450

填充开始时派生的类的最佳方法是什么? 我在数据库读取查询中的类定义为:

List<Courses> majorclasses = new List<Courses>() 

我可以通过读取不同的majorNames然后在循环中为每个majorName填充每个课程来手动管理数据以填充班级。

(pheudo code)
List<string> distinctMajors = majorClasses.Disticnt("majorNames").ToList()
foreach major in distinctMajors
{
   course.Add(courseName)
}

还有其他更好的方法可以实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试一下。

List<Courses> courses =  data.GroupBy(
    d => new { d.SchoolName, d.MajorName},
    d => d.CourseName,
    (key,g) => new Courses {
        MajorName = key.MajorName,
        SchoolName = key.SchoolName,
        Course = g.Distinct().ToList() }
    ).ToList();