When you call ToList(), it creates a List<entity> collection, it has to, ToList forces it to do that.
However as you expect: this is a copy action. So instead do:
var q = ...
IEntityCollection2 col = ((ILLBLGenProQuery)q).Execute();
(from my bare head so can have some typo's but the idea is to cast the q to an ILLBLGenProQuery
You can also traverse the List<T> yourself of course and call adapter.DeleteEntity() with the entity, first starting a transaction before you traverse the list.. Though that's less efficient.