2010-09-17 105 views
0

我有以下實體:左外連接LINQ到實體

客戶
- 客戶端ID
- CLIENTNAME

承包商
- ContractorID
- ContractorName

優選承包商
- PreferredContractorID
- 客戶端ID
- ContractorID

所以我的客戶和承包商名單。客戶更喜歡與其他承包商合作。我想建立一個LINQ to Entity查詢,它用一個布爾字段指示承包商是否優先選擇所有承包商。

public IQueryable<PreferredContractor> GetPreferredContractors(int clientID) 
    { 
     var preferredContractors = from c in db.Contractors 
        from pc in db.PreferredContractors.DefaultIfEmpty() 
        select new PreferredContractor 
          { 
           ContractorID = c.ContractorID, 
           ContractorName = c.ContractorName, 
           IsPreferred = // This is where I need help 
          }; 

     return preferredContractors; 
    } 

如何確定承包商是否首選?

回答

3
var preferredContractors = 
       from c in db.Contractors 
       join pc in db.PreferredContractors.Where(pc2 => pc2.ClientId == clientId) on c.ContractorId equals pc.ContractorId into j 
       from pc in j.DefaultIfEmpty() 
       select new PreferredContractor 
         { 
          ContractorID = c.ContractorID, 
          ContractorName = c.ContractorName, 
          IsPreferred = pc != null 
         }; 
+0

感謝您的及時響應。但我應該在哪裏使用clientID?我需要向選定的客戶展示首選承包商。 – Kumar 2010-09-17 08:00:04

+0

@Kumar,我更新了我的回答中的代碼 – 2010-09-17 09:23:26

+0

謝謝。有用!!!! – Kumar 2010-09-17 15:12:58