我有一个以下面的格式编写的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; }
}
答案 0 :(得分:1)
改变这个:
where con.ID.Contains(consumerIDs)
到此:
where consumerIDs.Contains(con.ID)
这将检查select语句中项目的id是否在输入列表中。