我最初使用foreach循环,然后在循环中的每一个元素,我执行LINQ查询,像这样:对这种查询类型使用LINQ的正确方法?
foreach (MyObject identifier in identifiers.Where(i => i.IsMarkedForDeletion == false))
{
if (this.MyEntities.Identifiers.Where(pi => identifier.Field1 == pi.Field1 && identifier.Field2 == pi.Field2 && identifier.Field3 == pi.Field3).Any())
{
return false;
}
}
return true;
然后我修改了它,像这样:
if (identifiers.Any(i => !i.IsMarkedForDeletion && this.MyEntities.Identifiers.Where(pi => i.Field1 == pi.Field1 && i.Field2 == pi.Field2 && i.Field3 == pi.Field3).Any()))
{
return false;
}
return true;
我的问题是这仍然是使用LINQ的错误方式?基本上,我想消除对foreach循环的需要(似乎我应该能够摆脱它),并通过不对列表中的每个元素执行单独的数据库查询来更快地进行数据库查询。相反,我想为所有元素执行一个查询。谢谢!
“标识符”,“MyEntities”和“MyEntities.Identifiers”的**类型**是什么?他们在内存集合或数据库实体? –
只有MyEntities.Identifiers在数据库中。其他一切都在记忆中。 – Andrew
换句话说,'标识符'在内存集合中,'MyEntities.Identifiers'是'DbSet'。 –