0

我正在構建使用Entity Framework 4.1的ASP.Net MVC 3 Web應用程序。我還使用具有通用存儲庫的工作單元模式。我的模型中有兩個實體,ShiftShiftDate。請參閱下面的圖表瞭解它們的結構。我們的想法是,一個移位可以有1個或多個ShiftDatesShiftDate只能屬於一個Linq To Entities Exclude相關數據

enter image description here

我希望創建一個查詢將返回所有班次的名單像這樣

public IList<Shift> GetShifts(int id) 
{ 
    return _UoW.Shifts.Get(s => s.organisationID == id).OrderBy(s => s.startDate).ToList(); 
} 

然後在我的Razor視圖,我想用一個foreach循環,並列出每班的細節。其中一個細節是ShiftDates每個移位有總數。要做到這一點,我會做這樣的事情

foreach(var shiftDate in Model.Shifts) 
{ 
    @Html.DisplayFor(modelItem => item.ShiftDates.Count) 
} 

這工作得很好,不過,我想伯爵排除ShiftDates其shiftDateStatusID設置爲442。要做到這一點我想修改我的LINQ查詢到這個

return _UoW.Shifts.Get(s => s.organisationID == id && s.ShiftDates.Any(sd => sd.shiftDateStatusID != 442)) 
.OrderBy(s => s.startDate).ToList(); 

然而,這仍然拉回誰擁有442

一個shiftDateStatusID希望這是有道理的ShiftDates。

任何反饋將不勝感激。

謝謝。

回答

1

如果你

_UoW.Shifts.Get(s => s.organisationID == id 
        && s.ShiftDates.Any(sd => sd.shiftDateStatusID != 442) 

你得到至少有一個ShiftDate具有比442好了一個其他shiftDateStatusID變化,有可能是很多符合這個條件的變化的。這些班次的ShiftDates收集將完全加載,包括那些442(如果有的話)。

要麼你有,當你填充您的視圖模型排除ShiftDate s的狀態442,或當它只是對count,排除他們當你做計數:

item.ShiftDates.Count(sd => sd.shiftDateStatusID != 442) 
+0

感謝。很有幫助。 – tgriffiths