@Eranga謝謝你的答案及以上評論。我得到它的工作執行以下操作,
控制器:
panelViewModel.Panels = _panelRepository.GetPanels()
.Where(p => p.PanelApplicationForms.Count > 0
&& p.PanelApplicationForms
.Any(f => f.IsPublish
&&
f.PanelApplicationFormVersions.OrderByDescending(v => v.VersionNumber).
First().DueDate >= DateTime.Today
&& f.PanelApplicationFormVersions.Count > 0
)
&& p.PanelApplicationForms != null)
.OrderBy(t => t.Title);
查看:
@foreach (var panelApplicationFormItem in panelItem.PanelApplicationForms.Where(panelApplicationFormItem => panelApplicationFormItem.IsPublish))
{
var panelApplicationFormVersion = panelApplicationFormItem.PanelApplicationFormVersions.OrderByDescending(v => v.VersionNumber).First();
if (panelApplicationFormVersion.DueDate >= DateTime.Today)
{
<tr>
<td>
@Html.DisplayFor(modelItem => panelApplicationFormItem.Title)
</td>
<td class="span2">
@if (panelApplicationFormItem.PanelApplicationFormVersions.Count > 0)
{
@Html.DisplayFor(modelItem => panelApplicationFormVersion.DueDate)
}
</td>
<td class="span2">
@{
//var isApplicationAlreadyExist = panelApplicationFormVersion.Id.IsApplicationAlreadyExist()
}
@if (panelApplicationFormVersion != null)
{
<a href="~/Application/Apply/@[email protected]rmVersion.VersionNumber" class="btn">Apply</a>
}
else
{
<a href="#" class="btn">Sum</a>
@*<p>No versions available to apply</p>*@
}
</td>
</tr>
}
}
我知道它是從OP的代碼,不過是啊...'p.PanelApplicationForms.Count> 0'在EF中引發異常,它應該是Any()。同樣,'p.PanelApplicationForms!= null'在EF中引發異常(無論如何都是冗餘的)。除此之外,這並不排除今天也有日期的專家組。但是OP沒有具體說明這是否是一個問題。我認爲條件應該是'All(f => f.PanelApplicationFormVersions(All(v => v.DueDate <= today))。「 –
Any()和All()http:// stackoverflow之間的區別。 com/questions/9027530/linq-not-any-vs-all-dont –
Eranga代碼適用於我,但有一個問題。即使只有'PanelApplicationFormVersion'的一條記錄顯示所有'PanelApplicationForms'滿足DueDate條件 如果DueDate的條件不滿足,如何不顯示'PanelApplicationForms'? –