2009-07-02 124 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