7
votes

Quel est le moyen le plus simple de comparer un énorme à une valeur entière de retour d'un dB

Je tire quelques données d'une table à l'aide de Linq 2 SQL ... L'une des pièces de données est une valeur qui représente une énumération dans mon code d'application.

Quel est le moyen le plus simple de comparer les données renvoyées dans des objets LINQ et l'énumération du code de l'application. Donc, par exemple xxx

puis dans la méthode que j'ai xxx

je pourrais faire ce Xxx

ou je pourrais stocker les noms de dénombrement dans la base de données, puis je pourrai faire ce xxx

y a-t-il une meilleure façon? L'ENUM n'a que deux articles et ils sont assez fixes ... pourraient peut-être avoir un troisième ou un quatrième mais ne deviendront probablement jamais au-delà de cela. Ainsi, avoir une table entière semble être une overcilleuse.

En réalité, il s'agit d'un duplicata de C # int to Enum Conversion


1 commentaires

Je vote cela est fermé ...


5 Réponses :


14
votes

Cela devrait fonctionner comme prévu - juste jeté au type de base.

item.SomeNullableInteger == (Int32)SomeEnum.First


1 commentaires

C'est exactement ce que je cherchais ... Cela me permet également d'utiliser l'élément.SomenlullableInteger (ce qui n'est bien sûr plus un entier mais le type de dB est un entier) dans des relevés de commutation. J'ai examiné les définitions de DBML et, bien que de changer le type ... mais parce que l'énumé n'était pas dans la liste déroulante, je ne l'ai pas changé :-), je suis clairement un utilisateur de la bibliothèque et non un écrivain de la bibliothèque.



2
votes

Vous pouvez lancer le Enum à int : xxx


1 commentaires

La vérification du hasvalue n'est pas nécessaire, car l'opérateur de comparaisons soulevé le gère correctement.



3
votes

Casting L'Enum à un Int devrait faire l'affaire.


0 commentaires

4
votes

Selon la documentation officielle, vous pourriez lancer votre Enum comme un INT pour comparer.

enum SomeEnum
{
   First = 1;
   Second = 2;
}


1 commentaires

Ils sont en fait ... juste oublié dans le code que j'ai écrit pour la question :-)



2
votes

avoir xxx

fonctionner:

  • soyez conscient du premier = 0 & seconde = 1 (suivant la déclaration de cet énumé)
  • SomenullableInteger est de type INT
  • et bien sûr, SomenullableInteger = 0 signifie premier pour vous et SomenullableInteger = 1 signifie seconde.

2 commentaires

Bon point, sauf si vous attribuez spécifiquement la valeur de l'énum. + 1 pour penser à souligner cela, cependant.


Je veux vraiment savoir comment cela compile.