我在Db中有一个字段映射到带有flagsattribute的枚举。现在,我必须根据此字段筛选出结果。假设我有一个颜色表,其中包含一个名为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) +")"
假设您要查询未设置Green标志位的颜色,则使用按位AND运算符可以解决问题:
var query= @"select * from colors
where (value & " + (int)Colors.Green + ") = 0";
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句