를 컴파일하지 않습니다 :LINQ 문이 문은 컴파일되지 않습니다
이query = from g in context.GridViews
join f in context.GridViewFavorites on g.ID equals f.GridViewID into gf
where g.GridTypeID == id && (g.IsShared == true || g.RepID == me.clsRep.OID)
&& f.RepID == me.clsRep.OID
select g;
컴파일러 오류가 이것이다 (그리고 그것은 어디 조항의 마지막 부분을 강조하는 것 :
이름 'F를 '현재 컨텍스트에 존재하지 않는 것은
그것은 논리적 SQL 대응이 될 것 :
declare @RepID int
declare @GridTypeID int
select @RepID=15, @GridTypeID=5
select g.*,f.*
from
GridViews g
left outer join GridViewFavorites f on f.GridViewID = g.ID
where
g.GridTypeID = @GridTypeID and (g.IsShared = 1 or g.RepID == @RepID)
and f.RepID == @RepID
참고 : @hdv의 풍어 당는 SQL 샘플이 실제로해야한다 :
select g.*,f.*
from
GridView g
left outer join GridViewFavorite f on f.GridViewID = g.ID and f.RepID = @RepID
where
g.GridTypeID = @GridTypeID and (g.IsShared = 1 or g.RepID = @RepID)
SQL 대응 항목이 내부 조인으로 작동한다는 것을 알고 있습니까? 'GridViewFavorites'가 발견되지 않으면,'f.RepID'는 결코 어떤 매개 변수와도 비교되지 않을 것입니다. 그것이 당신이 원하는 것이라면, 지금까지 얻은 답보다 더 간단 할 수 있습니다. – hvd
@hvd, 전화하세요. 나는 흩어져있는 연산자의 나머지 부분을 통해 알 수 있듯이 SQL의 일종의 빠른 손을 썼다. 질문에 올바른 SQL을 게시 할 것입니다. 귀하의 질의에 대답하기 위해, 네, 아래의 답은 제가 찾고있는 것을 뒤쫓고 있습니다. – sisdog