2009-07-02 5 views
1

Je travaille sur la requête LINQ suivante:Comment puis-je écrire la clause "Where" dans la requête LINQ to SQL suivante?

public void GetAuditRuleAgencyRecords(IEnumerable<Entities.AuditRule> rules) 
{ 
    using (LinqModelDataContext db = new LinqModelDataContext()) 
    { 
     var auditAgencyRecords = (from ag in db.Agencies 
         join ara in db.AuditRuleAccounts on ag.Agency_Id equals ara.AgencyID 
         join arr in db.AuditRuleResults on ara.AuditRuleAccountID equals arr.AuditRuleAccountID 
         join are in db.AuditRuleEnterprises on arr.AuditRuleEnterpriseID equals are.AuditRuleEnterpriseID 
         select new 
         { 

          AgencyID = ag.Agency_Id, 
          AgencyName = ag.Agency_Name, 
          AuditRuleEnterpriseID = arr.AuditRuleEnterpriseID, 
          CorrectedDate = arr.CorrectedDate, 
          NbrDaysToCorrect = arr.NbrDaysToCorrect,  

         }).ToList(); 
    } 
} 

Vous pouvez voir que je passe dans un IEnumerable règles. Chaque objet AuditRule que je passe a une propriété appelée "ID". A quoi ressemblerait ma clause where pour cette requête si je veux dire, ne renvoyer que les enregistrements où la colonne de table AuditRuleEnterprise.AuditID correspond à l'un des ID de ma propriété "ID" de règles (les objets que j'ai passé dans la méthode)?

Répondre

4

Essayez:

.Where(rules.Select(r => r.ID).Contains(arr.AuditRuleEnterpriseID.AuditID)) 

ou, dans la syntaxe de requête

where rules.Select(r => r.ID).Contains(arr.AuditRuleEnterpriseID.AuditID) 
+0

En effet, LINQ to SQL qui développe une expression. – Richard

+0

merci jason. Je vous en suis reconnaissant. – KingNestor

Questions connexes