I don't know if it really speeds up the process. But if you really want this, I would opt for one of these options:
a. Fetch the IDs you want to delete. You can do this using a DynamicList to just fetch that field (pk). Then call the delete by batches. Something like this (approx):
List<int> idsToDelete = GetIdsToDelete(); // where you use DynamicList to obtain the list.
int batchSize = 500;
Queue<int> idsToDeleteQueue = new Queue<int>(idsToDelete);
while (idsToDeleteQueue.Count > 0)
{
// don't remember if this method remove the elements from the queue, but you get the idea
var idsToDeleteBatch = idsToDeleteQueue.Take(batchSize);
// this will generate a WHERE Id IN (23,78,334,10, ...);
IRelationPredicateBucket filter = new RelationPredicateBucket(MyEntityFields.Id == idsToDeleteBatch);
adapter.DeleteEntitiesDirectly("MyEntityName", myFilter);
}
b. Use a stored procedure
c. I don't know if this will work for you, but I did something similar for UpdateEntitiesDirectly, adding a ORDER BY and LIMIT clauses. You have to extend a little bit some classes. In your case would be DeleteEntitiesDirectly and you just want to add a TOP clause. See this for more info: http://www.llblgening.com/archive/2009/08/updateentitiesdirectly-with-order-by-and-limit-mysql-specific/