C'est une question basique que je connais, et sûrement une refonte d'une vieille recette faite par tout le monde sur la planète terre et au-delà, mais je suis tellement perdu que j'ai besoin de Conseil.Drapeaux et enum pour faire un linq anyFlags (MyFlag)
j'ai un ENUM comme celui-ci:
[Flags]
public enum MyEnum
{
none=0, //0000
toto=1, //0001
tata=2, //0010
tati=4, //0100
titi=8 //1000
}
et j'ai une valeur ENUM comme:
MyEnum s= tata | titi; //(1010)
afin de dire ce que je compris s = 10
Maintenant, j'ai une valeur dans ma base de données qui est un court et pourrait être l'un de ceux-ci, à savoir: 1,2,3,4,5,6,7,8,9,10,11,12,13,14, 15
id EnumValue
1 3
2 14
3 10
4 9
5 0
Maintenant, j'ai besoin d'obtenir une instruction linq pour dire quel id a au moins une autre énumération donnée dans s.
Je voudrais à la fin: 1,2,3,4.
Je l'ai fait pour la méthode des thèses:
public static bool HasAllFlags(this short input, Enum matchTo)
{
return (Convert.ToUInt32(input) & Convert.ToUInt32(matchTo)) == Convert.ToUInt32(matchTo);
}
public static bool IsFlag(this short input, Enum matchTo)
{
return Convert.ToUInt32(input)== Convert.ToUInt32(matchTo);
}
mais je suis coincé avec celui-ci:
public static bool HasAnyFlags(this short input, Enum matchTo)
{
return ....????....;
}
Ils assez bien, mais je maintenant je besoin de cette méthode qui me donnerait 1,2,3,4 comme résultat souhaité. J'ai essayé pas mal de choses mais je n'arrive pas à le faire correctement. L'un de vous a-t-il des solutions prêtes pour cela?
Merci à l'avance,
PS: J'utilise C# 3.5
qui ne fonctionnera pas. si l'entrée a un drapeau non donné dans matchTo, la valeur de l'ET ne sera pas non plus nulle. – Bryan
@Brian pas tout à fait avec vous, pourriez-vous donner un exemple? – AakashM
Merci pour la belle explication AakashM! – Arthis