有没有什么方法可以获取所有不是 FlagsAttribute 枚举类型的标志?

Is there any method to Get all Flags that are not of a type in FlagsAttributed enum?

我在 Db 中有一个字段映射到带有 flagsattribute 的枚举。现在我必须根据这个字段过滤掉结果。 假设我有一个颜色 table,其中有一个名为 value 的字段映射到下面的枚举。

[FlagsAttribute]
public enum Colors
{
    None = 0,
    Red = 1,
    Black = 2,
    Green = 4
}

//I want to achieve sth like this.
//Is there any equivalent of this in c#??
Colors[] colorsTharAreNotGreen=Colors.OfNotType<Colors.Green>

   var colorsTharAreNotGreenFilter=int[colorsTharAreNotGreen.Length];
   for(int i=0;i<colorsTharAreNotGreen.Length;i++){
       colorsTharAreNotGreenFilter[i]=(int)colorsTharAreNotGreen[i];
    }
   //Later on i want to construct query like
      var query= @"select * from colors
      where value not in(" + String.Join(",",colorsTharAreNotGreenFilter) +")"

假设您想查询未设置绿色标志位的颜色,使用按位与运算符应该可以解决问题:

var query= @"select * from colors
where (value & " + (int)Colors.Green + ") = 0";