I would like to use a flags enum as a filterset to filter on a single value enum.

When I use one flags enum to provide both, I have two objections:

* The naming convention states than a flags enum is plural, and a single item enum not;
* I would like the filter/flags enum to have values for "none" and "all", but these are not valid values when not used as a filter;

An example stating my intention (but which does not run properly due to type incompatibility between the two enums)

```
    enum Material
    {
        wood,
        metal,
        plastic
    }

    [Flags]
    enum Materials
    {
        none = 0,
        wood = 1,
        metal = 2,
        plastic = 4,
        all = 7
    }

    var filter = Materials.all;

    foreach (article in articles.Where(a => Filter.HasFlag(a.FinishMaterial))
        ...

```

As mentioned, this example does not do what I want.
It feels not OK to only use the Materials enum because none and all are not valid values for an article finish.

I could use some casting to int to translate between both enums. But there should be a more elegant, non cluttered way to do this, right?

[edit after answer from Dennis]
I actually did think about using a collection as a filter. Also it feels heavy weight, requires more code, while using enums is lightweight. However, when is doesn't do the job I have no user for it, lightweigt/elegant or not...

[edit after marking as ansered]
Thank you all for your input!