このステートメントはコンパイルされません:
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;
コンパイラ エラーは次のとおりです (そして、where 句の最後の部分に下線が引かれています。
名前 '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)