拋出我有這樣的查詢:避免在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