3 回答
![?](http://img1.sycdn.imooc.com/545869470001a00302200220-100-100.jpg)
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; }
}
}
![?](http://img1.sycdn.imooc.com/533e51f30001edf702000200-100-100.jpg)
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";
});
- 3 回答
- 0 关注
- 198 浏览
添加回答
举报