левое внешнее соединение в LINQ - PullRequest
1 голос
/ 13 октября 2010

как я могу реализовать левое внешнее соединение в следующем коде:

var showmenu = from pag in pagerepository.GetAllPages()
               join pgmt in pagerepository.GetAllPageMeta()
               on pag.int_PageId equals pgmt.int_PageId 
               where (pag.int_OrganizationId == layoutrep.GetSidebarDetailById(SidebarDetailsId).int_OrganizationId
               && pag.int_PostStatusId == 2 && pag.bit_ShowInMenu == true) && 
               (pgmt.vcr_MetaKey.Contains("chk") && pgmt.vcr_MetaValue.Contains("true"))
               select pag;

1 Ответ

1 голос
/ 13 октября 2010

Попробуйте, ключом является использование оператора DefaultIfEmpty(). Вот хорошая статья , в которой более подробно обсуждается использование этого оператора.

var showmenu = from pag in pagerepository.GetAllPages()
               join pgmt in pagerepository.GetAllPageMeta() 
               on pag.int_PageId equals pgmt.int_PageId into leftj
           from pgmt2 in leftj.DefaultIfEmpty()
               where (pag.int_OrganizationId == layoutrep.GetSidebarDetailById(SidebarDetailsId).int_OrganizationId
               && pag.int_PostStatusId == 2 && pag.bit_ShowInMenu == true) && 
               (pgmt2.vcr_MetaKey.Contains("chk") && pgmt2.vcr_MetaValue.Contains("true"))
               select pag;
...