2010-09-17 142 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