I can think of 3 possibilities, but it depends on your requirement:
- Use ExecuteMultipleRequest
- Create and execute a bulk delete job
- Create a special entity that takes your criteria or list of ids and put a plugin on it that actually does the deletes.
Unfortunately they all have their down sides, you can only run 2 executemultiple requests at once in CRM on-line, and there's a limit to the number of requests in each ExecuteMultipleRequest (although you can split them up). If it's on-premise then I believe
the limitations are less and you have some control.
Option 2 will run as a background task, so you can't wait for it.
Option 3 is a lot of work to write and can be difficult to handle errors with, although if the plugin is synchronous you can at least wait for it. Additionally you have to be careful how many things you delete per entity create/plugin call..