You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C# LINQ将数据库记录转换为含嵌套列表的test类

解决方法

你可以通过在Select中对分组后的元素逐一映射为StudentGrade对象,再转换为List<StudentGrade>来填充StudentGrades属性。另外,分组后的IGrouping<TKey, TElement>自带Key属性,直接用它获取分组的学生ID比调用FirstOrDefault更简洁高效。

完整代码示例:

var allResult = _getAllClass.FindAll();
var result = allResult.GroupBy(x => x.idStudent)
                     .Select(group => new test
                      {
                         idStudent = group.Key,
                         StudentGrades = group.Select(item => new StudentGrade
                         {
                             className = item.className,
                             startTime = item.startTime,
                             endTime = item.EndTime // 注意数据库字段是EndTime,类属性是endTime,需保证大小写匹配
                         }).ToList()
                      }).ToList();

核心逻辑说明:

  • 分组:GroupBy(x => x.idStudent)将原始课程记录按学生ID分组,每个分组对应一个学生的所有课程。
  • 映射学生ID:group.Key直接获取当前分组的学生ID,无需再从分组元素中查询。
  • 构建课程列表:通过group.Select(...)遍历分组内的每一条课程记录,将字段值赋值给StudentGrade的对应属性,最后用ToList()转换为列表类型,匹配test类的StudentGrades属性。

命名规范提示:

按照C#编码规范,类名建议使用大驼峰命名(如Test替代test),属性名也建议统一为大驼峰风格(如IdStudent替代idStudent),提升代码可读性和规范性。

内容的提问来源于stack exchange,提问作者Lucas Renatto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 09:55:14