【发布时间】:2013-04-11 12:06:29
【问题描述】:
recordsList.ListOfRecords = new StudentRecordsBAL()
.GetStudentsList()
.Select(q => new StudentRecords()
{
_RollNumber = q._RollNumber,
_Class = q._Class,
_Name = q._Name,
_Address = q._Address,
_City = q._City,
_State = q._State,
_Subjects = q._Subject,
_AttendedDays = new AttendanceBAL()
.GetAttendanceListOf(q._RollNumber)
.Where(date => date != null)
.Select(date =>
new DateTime(date._Date.Year, date._Date.Month, date._Date.Day))
.Distinct()
.ToList(),
_AttendedSubjects = GetAttendedSubjects(q._RollNumber)
}).ToList();
上面代码中的方法 GetAttendanceListOf(q._RollNumber) 将返回数据库中的记录列表,如果传递的“roll-no”没有记录,则返回“null”。一个 linq 查询将被终止,产生错误
“值不能为空”。
有没有办法处理这个错误并让 LINQ 跳转到下一步?
【问题讨论】:
-
也许您可以使用
Where(q => q != null)来过滤掉空值? -
或者是“List of things or null”,你可以使用
Select(l => l == null ? Iterable.Empty : l) -
如果可以,只需修改
GetAttendanceListOf,如果没有找到给定的“roll-no”,则返回空列表。
标签: c# linq select null dynamic-list