这是我从数据库来的原始数据:从C#端集团通过原始数据从数据库
PrimaryColumn StudentId StudentName CourseName CourseId CourseDuration
1 1 X Cse1 C1 2
2 1 X Cse2 C2 1
3 1 X Cse3 C3 3
4 2 Y Cse1 C1 2
5 2 Y Cse4 C4 5
类:
public class Student
{
public int StudentId {get; set;}
public string StudentName {get; set}
public List<Course> Courses {get; set;}
}
public class Course
{
public int CourseId {get; set;}
public string CourseName {get; set;}
public int CourseDuration {get; set; }
}
我的目标是获取由学生和课程分组数据他们将使用List<Course>
作为学生类的属性。
所以,我认为目标是相当前进的。所以,我继续使用GroupBy来处理从DB到C#的原始数据,希望得到结果但无济于事。
到目前为止,这是我得到的最好的。
masterData.GroupBy(x => new { x.StudentId, x.StudentName }, (key, group) => new { StudentId = key.StudentId, StudentName = key.StudentName, Courses=group.ToList() }).ToList();
尽管这并没有让我得到我想要的东西。通过一些次要的代码解决方法发布此调用,我能够实现我所需要的。但是,每当我无法正确分组原始数据时,我都会感到厌烦。
如果任何人都能向我展示正确的方式来进一步优化上面的代码或者完全不同的方式,这将是非常有帮助的。
这是我需要的结果是在一个List<Student>:
Student:
StudentId: 1
StudentName: X
List<Course> Courses: [0] - { CourseId: C1, CourseName = Cse1, CourseDuration = 2}
[1] - { CourseId: C2, CourseName = Cse2, CourseDuration = 1}
[2] - { CourseId: C3, CourseName = Cse3, CourseDuration = 3}
Student:
StudentId: 2
StudentName: Y
List<Course> Courses: [0] - { CourseId: C1, CourseName = Cse1, CourseDuration = 2}
[1] - { CourseId: C4, CourseName = Cse4, CourseDuration = 5}
干杯
请正确编写您的类声明。它不是公立班级学生,是公立班级学生。 – mybirthname
这不是你的问题的答案,但你的表结构是有问题的。当课程持续时间发生变化时会发生什么?更新表中的所有值?更好的办法是有单独的学生,课程和StudentCourses表,请参阅[数据库规范化](https://en.wikipedia.org/wiki/Database_normalization) – HebeleHododo
@ HebeleHododo我同意,但这是我得到的数据,而不是数据库中存在的,我无法控制的。 – portatoriacqua