Basically, you do a left outer join with local objects in the same way you would do it with any other Linq source. The problem comes in when the provider may not understand what you're doing.
So, have you tried it the obvious way to see if it worked? If that doesn't work, then you may find it reasonable to simply return the results and filter out the undesired rules in a third Linq statement.