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