Quote Originally Posted by Shaggy Hiker View Post
What I'm looking for is whether or not this general problem has a known solution.
I'd say: Move your "Widgets" into a Table - and use SQL...

SQL (as a language) is specialized in dealing with Set-Ops, (syntax- and performance-wise).

Do all your Filtering on that Widget-Table... return a ResultSet via SQL -
and then simply "visualize" each ResultSet in your Widget-Container in its entirety.

Just my $0.02...

Olaf