var query=from contest in Contestant
join ContstComp in ContestantsInCompetition on
contest.ID equals ContstComp.Contestant4 into ContestContestComp
from ccmp in ContestContestComp.DefaultIfEmpty()
join Cat in Category on contest.Category equals Cat.Id
where ContstComp.Competition == null
select new {Contst.Name,Cat.Category}
“Into <identifier>” serve as a reference to the results of join. It is just like ‘AS” keyword in SQL. In above query, join result set referred as “ContestContestComp”.
“DefaultIfEmpty” - returns a default instance if the collection is empty.
I think it is better you refer this article,
http://msdn.microsoft.com/en-us/library/vstudio/bb397895.aspx[
^]