抛出我有这样的查询:避免在EF空的异常,通过查询
result =
firstIdeaRepository.FindBy(
i => i.FirstIdeaState == FirstIdeaState && i.Date >= start && i.Date <= end)
.AsEnumerable()
.Select(j => new RptListOfCompanyBasedOnFirstIdeaState()
{
Name =
companyRepository.FindBy(i => i.UserId == j.UserId)
.FirstOrDefault()
DateOfMeeting =
calenderRepository.ConvertToPersianToShow(
meetingReposiotry.FindBy(s => s.FirstIdeaId == j.Id)
.FirstOrDefault()
.Date),
DateOfExit =
calenderRepository.ConvertToPersianToShow(j.DateOfExit.Value),
ReasonOfExit = j.ReasonOfExit,
}).ToList();
return result;
正如你可以看到我使用FirstOrDefault()
和j.DateOfExit.Value
,有时我的日期没有任何价值或有时我其他变量是空过,因为我使用firstordefaut()
像
companyRepository.FindBy(i => i.UserId == j.UserId).FirstOrDefault().
所以我的查询会引发空异常,并不能产生结果,我该如何处理这个异常以及例如,如果.NET检测到空值我们默认或忽略它这是默认值吗?
此致敬礼。
其中我可以设置第一个或默认值? – 2014-10-09 16:01:19
你可以在'.FirstOrDefault()'之前的调用链中使用'.DefaultIfEmpty()'。 – 2014-10-09 16:04:39
@martin_costello:'.DefaultIfEmpty()'不会对引用类型有帮助,默认值为null。 – Mrchief 2014-10-09 16:05:47