2010-09-17 4 views
0

je les entités suivantes:gauche OUTER JOIN LINQ to Entities

clients
- ClientID
- ClientName

Entrepreneur
- ContractorID
- ContractorName

PreferredContractors
- PreferredContractorID
- ClientID
- ContractorID

J'ai une liste de clients et sous-traitants. Les clients préfèrent travailler avec certains entrepreneurs que les autres. Je veux construire une requête LINQ to Entity qui tire tous les entrepreneurs avec un champ booléen indiquant si l'entrepreneur est préféré ou non.

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; 
    } 

Comment puis-je déterminer si l'entrepreneur est préféré ou non?

Répondre

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

Merci pour la réponse rapide. Mais où dois-je utiliser le clientID? Je dois montrer les entrepreneurs préférés pour un client sélectionné. – Kumar

+0

@Kumar, j'ai mis à jour le code dans ma réponse –

+0

Merci. Ça marche!!!! – Kumar