亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 LINQ 使用兩個數據表填充嵌套(父/子)列表

如何使用 LINQ 使用兩個數據表填充嵌套(父/子)列表

C#
鴻蒙傳說 2022-12-04 10:36:37
我是 Linq 和 C# 的新手。我正在使用兩個數據表填充兩個嵌套列表。有一個 StudentList 是父列表。每個學生的每門課程都有一個 GradeList。我可以從數據庫中獲取兩個數據集作為數據表,一個是學生,另一個是年級。在 Grade 類中有一個可以與 Student 鏈接的 studentID。如何填充 StudentList?    public class Student{    public string ID { get; set; }    public string FirstName { get; set; }    public string LastName { get; set; }    public string Email { get; set; }    public List<Grade> GradeList { get; set; }}  public class Grade{    public string CourseID { get; set; }    public string CourseTitle { get; set; }    public decimal CourseGrade { get; set; }    public string studentID { get; set; }}//下面是代碼DataTable dt = ds.Tables[0];  //students        DataTable dt1 = ds.Tables[1]; //Grades        studList = (from DataRow dr in dt.Rows                        select new Student()                        {                            ID = dr["ID"].ToString(),                            FirstName = dr["FIRSTNAME"].ToString(),                            LastName = dr["LASTNAME"].ToString(),                            GradeList = (from DataRow gdr in dt1.Rows as IEnumerable                                       //  where gdr["studentID"] == ID                                         select new Grade()                                          {                                             CourseID = gdr["COURSEID"].ToString(),                                             CourseTitle = gdr["COURSETITLE"].ToString(),                                             CourseGrade = Convert.ToDecimal(gdr["COURSEGRADE"]),                                             studentID = gdr["STUDENTID"].ToString()                                         }.ToList()                                         )                        }).ToList();我期待填寫 studList。非常感謝
查看完整描述

1 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

嘗試這個:


studList = 

    (from DataRow dr in dt.Rows

     select new Student()

     {

         ID = dr["ID"].ToString(),

         FirstName = dr["FIRSTNAME"].ToString(),

         LastName = dr["LASTNAME"].ToString(),

         Email = dr["EMAIL"].ToString(),

         GradeList = 

             (from DataRow gdr in dt1.Rows as IEnumerable

              where gdr["studentID"] == dr["ID"]

              select new Grade() 

              {

                  CourseID = gdr["COURSEID"].ToString(),

                  CourseTitle = gdr["COURSETITLE"].ToString(),

                  CourseGrade = Convert.ToDecimal(gdr["COURSEGRADE"]),

                  studentID = gdr["STUDENTID"].ToString()

              }).ToList()

      }).ToList();

第一個ToList()需要在右括號之后,where條件 forGradeList需要引用對象初始值設定項之外的變量,因為Student對象尚未完全構造。


查看完整回答
反對 回復 2022-12-04
  • 1 回答
  • 0 關注
  • 121 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號