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

は確かに、SQLにLINQは、IN式にあることを拡張します。 – Richard

+0

に感謝します。それは有り難いです。 – KingNestor

関連する問題