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

我有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 查询来做到这一点。谢谢


慕尼黑8549860
浏览 199回答 3
3回答

斯蒂芬大帝

不要使用 LINQ 或循环,而是为您的模型设置默认值。通过这种方式,您将始终确保按预期获得模型,并且无需到处乱搞所有学生列表。这可能不适用于 OP 案例,但值得一提的是,如果您的类是可序列化的,那么使用这种“技术”您仍然可以获得默认值。public class Student{&nbsp; &nbsp; public int? StudentId { get; set; }&nbsp; &nbsp; public string StudentName { get; set; }&nbsp; &nbsp; private int? _attendanceStatusId;&nbsp; &nbsp; public int? AttendanceStatusId&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; //you can use null coalescing operator here&nbsp; &nbsp; &nbsp; &nbsp; //like this: get { return _attendanceStatusId ?? 1; }&nbsp; &nbsp; &nbsp; &nbsp; get { return _attendanceStatusId == null ? 1 : _attendanceStatusId; }&nbsp; &nbsp; &nbsp; &nbsp; set { _attendanceStatusId = value; }&nbsp; &nbsp; }&nbsp; &nbsp; private string _attendanceStatusDes;&nbsp; &nbsp; public string AttendanceStatusDes&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; //Or get { return _attendanceStatusDes ?? "Present" }&nbsp; &nbsp; &nbsp; &nbsp; get { return _attendanceStatusDes == null ? "Present" : _attendanceStatusDes; }&nbsp; &nbsp; &nbsp; &nbsp; set { _attendanceStatusDes = value; }&nbsp; &nbsp; }}

aluckdog

获取过滤列表:var missingStatus = Students.Where(s => !s.AttendanceStatusId.HasValue && AttendanceStatusDes == null);然后迭代该列表,编辑这些项目的值。foreach(var student in missingStatus){&nbsp; student.AttendanceStatusId = 1;&nbsp; student.AttendanceStatusDes = "Present";}这有帮助吗?您当然可以在列表中的 foreach 中执行此操作,但我不建议这样做:Students.Where(s => !s.AttendanceStatusId.HasValue && AttendanceStatusDes == null)&nbsp; .ToList()&nbsp; .ForEach(s => {&nbsp; &nbsp; &nbsp; s.AttendanceStatusId = 1;&nbsp; &nbsp; &nbsp; s.AttendanceStatusDes = "Present";&nbsp; });
打开App,查看更多内容
随时随地看视频慕课网APP