linq查询与where子句中的列表

时间:2016-08-10 21:27:31

标签: sql linq sql-server-2012

我有一个以下面的格式编写的linq查询。现在,当我传递一个consumerID时,它工作正常,我可以把它放在where子句中。但是,当我尝试传递consumerIds列表时,如何将其放在where子句中。我在线查看了一些解决方案,他们都使用了一些我不想使用的其他linq格式。 请详细说明我是否可以在where子句中有一个列表,类似于我们在sql中可以有的子句?

public ICollection<ConsumerExchangeChangeDto> GetByConsumers(List<int> consumerIDs)
{
    EnrollmentReportingModel db = (EnrollmentReportingModel)Context.DbContext;
    var results = (from ecew in db.A
        join ecewe in db.B on ecew.ID 
        equals ecewe.ExchangeChangeEnrollmentWindowID into temp
        from j in temp.DefaultIfEmpty()
        join cecr in db.C on ecew.ConsumerExchangeChangeRequestID equals cecr.ID
        join con in db.D on cecr.ConsumerID equals con.ID
        where con.ID.Contains(consumerIDs) && !ecew.Deleted
        select new E
        {
            ConsumerID = con.ID,
            OrganizationID = con.OrganizationID,
            StartDate = ecew.StartDate,
            EndDate = ecew.EndDate,
            Deleted = ecew.Deleted
        }).ToList();
    return results;
}

这是dto类

public class E : ILzDto
{
    public int ConsumerID { get; set; }
    public int OrganizationID { get; set; }
    public DateTime? StartDate { get; set; }
    public DateTime? EndDate { get; set; }
    public bool Deleted { get; set; }
}

1 个答案:

答案 0 :(得分:1)

改变这个:

where con.ID.Contains(consumerIDs)

到此:

where consumerIDs.Contains(con.ID)

这将检查select语句中项目的id是否在输入列表中。