在运行时,我有一个动态的“父”ID列表,我需要查询我的一个实体表,使用LINQ如何在运行时生成查询?目前我(非常慢)循环我的ID列表并使用Where方法对数据库执行单独的查询。是否有一个API允许我构建一个WHERE语句,实质上是附加“&& value = something”,就像我自己编写SQL一样?
目前我的工作看起来像这样
foreach(var parent in parents)
{
col.AddRange(context.LocalAuthorities.Where(c => c.Parent.ID == parent.ID).ToList());
}
答案 0 :(得分:1)
如果您的目标是通过一个查询替换多个迭代查询,则可以使用此方法:
var allParentIds = parents.Select(p=>p.ID).ToList();
var result = context.LocalAuthorities.Where(c=> allParentIds.Contains(c.Parent.ID));
col.AddRange(result);