0

Entity Framework 4.1을 사용하는 ASP.Net MVC 3 웹 응용 프로그램을 구축하고 있습니다. 또한 작업 단위 패턴을 일반 저장소와 함께 사용합니다. 모델에 두 개의 엔터티가 있습니다. ShiftShiftDate입니다. 구조는 아래 그림을 참조하십시오. 아이디어는 시프트는 하나의 시프트에 속할 수 있습니다 하나 또는 여러 ShiftDatesShiftDate을 가질 수있다.Linq To Entities 관련 데이터 제외

enter image description here

내가 내 면도기보기에 그런 그래서

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

처럼 모든 교대의 목록을 반환하는 쿼리를 생성하고자하는, 내가 foreach 루프를 사용하여 목록을하고자하는 각 Shift의 세부 정보. 이러한 세부 정보 중 하나는 총 입니다. ShiftDates시프트 있습니다. 이를 위해 나는이 그러나 나는 카운트가 나는이

내 Linq에 쿼리를 개정하려고 이렇게하려면 shiftDateStatusID가 442으로 설정되어 ShiftDates을 제외 미세 싶은 작품

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

같은 것을 할 것입니다

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

그러나, 이것은 여전히 ​​희망이 말이 442

의 shiftDateStatusID이 ShiftDates을 다시 가져옵니다.

모든 의견을 크게 환영합니다.

감사합니다. 당신이

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

을 할 경우

답변

1

당신이 적어도 하나의 ShiftDate가 442 자보다 shiftDateStatusID 다른 데있는 변화를 가져,이 조건을 충족 변화의 많은 아마이 있습니다. 이 교대의 ShiftDates 콜렉션은 442가있는 경우를 포함하여 완전히로드됩니다 (있는 경우).

은 어느 당신은 당신이 당신의 뷰 모델을 채울 때 상태 (442)로 ShiftDate들 제외, 또는 그것은 단지 카운트 때 당신이 수를 할 때, 그들을 제외 : 이것에 대한

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

감사합니다. 매우 도움이됩니다. – tgriffiths