я был первоначально с помощью цикла Еогеасп, а затем для каждого элемента в петле, я выполнить запрос 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'. –