2009-07-02 118 views
1

我正在以下LINQ查询:如何在以下LINQ to SQL查询中编写“Where”子句?

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

你可以看到,我传递一个IEnumerable规则。我传入的每个AuditRule对象都有一个名为“ID”的属性。

如果我想说的话,我的where子句看起来像什么,只返回表列AuditRuleEnterprise.AuditID匹配我的规则“ID”属性中任何一个ID的记录(我的对象传入该方法)?

回答

4

尝试:

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

,或者在查询语法

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

事实上,LINQ to SQL的扩展了一个表达。 – Richard 2009-07-02 15:41:11