Hi Walaa,
I have found the problem.
It was related to the type mismatch of properties! Sorry if I take your time.
LinqMetaData db = new LinqMetaData();
var result = from sy in db.Survey
join sctemp in db.SurveyContactGroup on sy.Id equals sctemp.SurveyId into sysctemp
from sc in sysctemp.DefaultIfEmpty()
join cgtemp in db.ContactGroupRelation on sc.ContactGroupId equals cgtemp.ContactGroupId into sccgtemp
from cg in sccgtemp.DefaultIfEmpty()
join rvtemp in db.Review on new { sid = sc.SurveyId, cid = cg.ContactId } equals new { sid =[b](long)[/b] rvtemp.SurveyId, cid = rvtemp.CreatedByContactId } into sccgrytemp
from rv in sccgrytemp.DefaultIfEmpty()
select rv;
new { sid =(long) rvtemp.SurveyId, cid = rvtemp.CreatedByContactId }