为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Linq 更新列表列值,如果值为空

使用 Linq 更新列表列值,如果值为空

C#
慕尼黑8549860 2021-10-24 17:43:15
我有List<Student>多个记录public class Student{                public int? StudentId { get; set; }    public string StudentName { get; set; }    public int? AttendanceStatusId { get; set; }    public string AttendanceStatusDes { get; set; }     }在将数据发布到服务器时,有时AttendanceStatusId和AttendanceStatusDes会出现null。当 List 记录中的这 2 个值为空时,我想设置AttendanceStatusId=1&AttendanceStatusDes="Present" 如何使用 Linq 查询来做到这一点。谢谢
查看完整描述

3 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

不要使用 LINQ 或循环,而是为您的模型设置默认值。通过这种方式,您将始终确保按预期获得模型,并且无需到处乱搞所有学生列表。


这可能不适用于 OP 案例,但值得一提的是,如果您的类是可序列化的,那么使用这种“技术”您仍然可以获得默认值。


public class Student

{

    public int? StudentId { get; set; }

    public string StudentName { get; set; }

    private int? _attendanceStatusId;

    public int? AttendanceStatusId

    {

        //you can use null coalescing operator here

        //like this: get { return _attendanceStatusId ?? 1; }

        get { return _attendanceStatusId == null ? 1 : _attendanceStatusId; }

        set { _attendanceStatusId = value; }

    }

    private string _attendanceStatusDes;

    public string AttendanceStatusDes

    {

        //Or get { return _attendanceStatusDes ?? "Present" }

        get { return _attendanceStatusDes == null ? "Present" : _attendanceStatusDes; }

        set { _attendanceStatusDes = value; }

    }

}


查看完整回答
反对 回复 2021-10-24
?
aluckdog

TA贡献1847条经验 获得超7个赞

获取过滤列表:


var missingStatus = Students.Where(s => !s.AttendanceStatusId.HasValue && AttendanceStatusDes == null);

然后迭代该列表,编辑这些项目的值。


foreach(var student in missingStatus)

{

  student.AttendanceStatusId = 1;

  student.AttendanceStatusDes = "Present";

}

这有帮助吗?


您当然可以在列表中的 foreach 中执行此操作,但我不建议这样做:


Students.Where(s => !s.AttendanceStatusId.HasValue && AttendanceStatusDes == null)

  .ToList()

  .ForEach(s => {

      s.AttendanceStatusId = 1;

      s.AttendanceStatusDes = "Present";

  });


查看完整回答
反对 回复 2021-10-24
  • 3 回答
  • 0 关注
  • 198 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信