這是我從數據庫來的原始數據:從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