Через EF:
1) Получить строки по условию из БД.
2) Удалить полученные строки, вызвав метод Remove/RemoveRange на репозитории или как вы их получаете.
Да - чтобы удалить нужно сначала загрузить, это ограничение чистого EF. Данные гоняются два раза.
Через SQL:
1) Пишем SQL скрипт.
Минус - лучше избегать SQL при использовании EF, т.к. при переименовании свойств, таблиц - скрипты нужно будет искать и править отдельно. Их сложнее тестировать, изменять и т.п.
Через расширение для EF:
1) Пишем context.BulkDelete(customers, options => УСЛОВИЕ ) и все.
Ищем аналоги
https://entityframework-extensions.net/bulk-delete, есть бесплатные точно.
В этом случае мы используем EF, не пишем SQL, при этом данные не гоняются дважды, код чище, понятней и т.п.