I commented out this line (116) from Orchard.Projections.Drivers.ProjectionPartDriver:
contentItems = contentItems.Where(x => !x.Has<ProjectionPart>()).ToList();
...and found it to have no obviously detrimental effect on performance.
I tested it with Projections that use a Query that Filters Content Types with Projection Parts attached that use the same Query and with Content Types that have a Projection Part that Querys it's own Content Type (which might be the daftest things anyone might
wish to do with a Projection) and all seems mostly OK.
Given the obvious advantage of being able to 'Project' Content Types that have Projection Parts attached, could this line be removed in the next version?