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

如何使用LINQ将Repository返回的多行数据映射到Student对象?

使用LINQ将多行查询结果映射到Student对象集合

现有代码

var studentDetails = _repository.Getdata(BatchId); // 返回多行数据
Student stud_obj = new Student(); // 注:原代码中Student_obj应为笔误,修正为Student

Student类定义

// stud_obj.cs
public class Student
{
    public string Name { get; set; }
    public string Class { get; set; }
    public string Rank { get; set; }
    public string Gender { get; set; }
}

解决方案

由于studentDetails返回多行数据,单个Student对象无法存储所有结果,需要将其映射为Student对象集合,以下是两种常见场景的LINQ实现方式:

场景1:studentDetails是带对应属性的实体集合

如果studentDetails的元素本身包含Name、Class等属性(比如EF框架的实体类),直接用Select映射:

// 转换为List<Student>集合
var studentList = studentDetails.Select(item => new Student
{
    Name = item.Name,
    Class = item.Class,
    Rank = item.Rank,
    Gender = item.Gender
}).ToList();

场景2:studentDetails是DataRow集合

如果studentDetails是从DataTable获取的IEnumerable<DataRow>,通过列名取值映射:

var studentList = studentDetails.Select(row => new Student
{
    Name = row["name"]?.ToString() ?? string.Empty,
    Class = row["class"]?.ToString() ?? string.Empty,
    Rank = row["rank"]?.ToString() ?? string.Empty,
    Gender = row["gender"]?.ToString() ?? string.Empty
}).ToList();

额外说明

  • 若只需要单条数据(比如取第一条),可以在Select后追加FirstOrDefault():
    Student singleStudent = studentDetails.Select(item => new Student
    {
        // 映射字段
    }).FirstOrDefault();
    
  • 映射时建议处理空值,避免NullReferenceException,示例中用?.ToString() ?? string.Empty确保结果不为null。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:15:16