C# DataTable嵌套json数组

老师表和学生表查出的数据放入各自的DataTable

学生关联老师,拿学生表的老师id和老师表的老师id进行匹配查询

匹配成功则返回1,否则返回0

创建集合进行嵌套,list集合转json输出

//老师表(主表)
DataTable teacher = new DataTable();
//自定义列
teacher.Columns.Add("tid",typeof(int));
teacher.Columns.Add("tname",typeof(string));
//自定义列内容
teacher.Rows.Add(new object[] { 1, "张老师" });
teacher.Rows.Add(new object[] { 2, "李老师" });
teacher.Rows.Add(new object[] { 3, "王老师" });

//学生表(子表)
DataTable students = new DataTable();
//自定义列
students.Columns.Add("sid", typeof(int));
students.Columns.Add("sname", typeof(string));
students.Columns.Add("tid", typeof(int));
//自定义列内容
students.Rows.Add(new object[] { 1, "张三",1 });
students.Rows.Add(new object[] { 2, "李四",2 });
students.Rows.Add(new object[] { 3, "王五", 4 });

//老师集合
List<object> teacherList = new List<object>();
//学生集合
List<object> studentsList = new List<object>();
//循环老师的人数
foreach (DataRow row in teacher.Rows)
{
    //根据学生表的老师id去和老师表的老师id匹配
    DataRow[] dr = students.Select("tid=" + row[0].ToString() + "");
    //匹配成功为1,否则为0
    if (dr.Length > 0) {
        //循环匹配成功的数据
        for (int i = 0; i < dr.Length; i++)
        {
            //需要嵌套的学生的数据
            var studentdata = new { sid = dr[i]["sid"].ToString(), sname = dr[i]["sname"].ToString(), tid = dr[i]["tid"].ToString() };
            //放入学生集合
            studentsList.Add(studentdata);
        }
    }
    //老师集合,里面放入学生集合
    var teacherdata = new { tid = row[0].ToString(), tname = row[1].ToString(), StudentArr = studentsList.ToArray() };
    //添加到老师集合
    teacherList.Add(teacherdata);
    //清空学生集合
    studentsList.Clear();
}

//Console.WriteLine(teacherList.ToArray());
//或者
Object obj = new { errCode = 0, errMessage = "成功!", data = teacherList.ToArray() };
//输出到页面查看
return JsonConvert.SerializeObject(obj);
© 版权声明
THE END
文章不错?点个赞呗
点赞84赞赏
分享
评论 抢沙发
小语雀的头像-小语雀网

昵称

取消
昵称表情代码图片