有没有什么方法可以获取所有不是 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";
我在 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";