【问题标题】:How can I write the "Where" clause in the following LINQ to SQL Query?如何在以下 LINQ to SQL 查询中编写“Where”子句?
【发布时间】:2009-07-02 23:42:25
【问题描述】:

我正在处理以下 LINQ 查询:

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 匹配的记录(我已通过的对象进入方法)?

【问题讨论】:

    标签: c# linq linq-to-sql


    【解决方案1】:

    试试:

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

    或者,在查询语法中

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

    【讨论】:

    • 确实,LINQ to SQL 将其扩展为 IN 表达式。
    猜你喜欢
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多