2011-02-07 131 views
2

當使用Linq到實體時,我有一個關於連接的問題。根據文檔,沒有限定符的連接使用就像左外連接一樣。但是,當我執行下面的代碼時,我得到的計數返回爲零。但是,如果我註釋掉這三條連接線,我會得到1的計數。這將表明連接充當內連接。我有兩個問題。默認情況下是內部還是外部?第二,如何做另一個,即內部或外部?內部和外部的關鍵詞不起作用。Linq to Entities加入

var nprs = (from n in db.FMCSA_NPR 
          join u in db.FMCSA_USER on n.CREATED_BY equals u.ID 
          join t in db.LKUP_NPR_TYPE on n.NPR_TYPE_ID equals t.ID 
          join s in db.LKUP_AUDIT_STATUS on n.NPR_STATUS_ID equals s.ID 
          where n.ROLE_ID == pRoleId 
          && n.OWNER_ID == pOwnerId 
          && n.NPR_STATUS_ID == pNPRStatusId 
          && n.ACTIVE == pActive 

          select n).ToList(); 


       if (nprs.Count() == 0) 
        return null; 

回答

1

LINQ中的連接默認爲內部連接。要執行外連接,您必須執行手動「if-null-then」或編寫自己的自定義連接操作。

具有手動左外例如,如果空:

var query = from person in people 
      join pet in pets on person equals pet.Owner into gj //inner 
      from subpet in gj.DefaultIfEmpty() 
      select new { person.FirstName, PetName = (subpet == null ? String.Empty : subpet.Name) }; //left outer