En SQL, vous pouvez utiliser la syntaxe suivante:
SELECT *
FROM MY_TABLE
WHERE VALUE_1 IN (1, 2, 3)
Existe-t-il un équivalent en C #? L'IDE semble reconnaître "in" comme un mot-clé, mais je ne semble pas pouvoir trouver d'informations à ce sujet.
Alors, est-il possible de faire quelque chose comme ce qui suit:
int myValue = 1;
if (myValue in (1, 2, 3))
// Do something
Au lieu de
int myValue = 1;
if (myValue == 1 || myValue == 2 || myValue == 3)
// Do something
c#
sql
operators
in-operator
Paul Michaels
la source
la source
Réponses:
Si vous voulez écrire .In, vous pouvez créer une extension qui vous permet de le faire.
la source
List.Contains()
est je pense ce que vous cherchez. C # ain
keyword
et non pas unoperator
objectif complètement différent de celui auquel vous faites référence en SQL.Il existe deux façons d'utiliser le
in
mot clé en C #. Supposons que vous ayez une chaîne [] ou une liste en C #.En me référant à votre modification, je mettrais votre code de cette façon pour faire ce dont vous avez besoin.
la source
Tu peux le faire:
la source
Vous utilisez généralement la
Contains
méthode d'une collection.J'espère que cela aide.
la source
Il n'y a pas d'opérateur "in" en C #, le mot clé "in" est utilisé uniquement avec "foreach (... in ...)" ou "from ... in ...".
L'équivalent LINQ de votre requête SQL serait:
la source
Duplicata de: LINQ to SQL dans et pas dans
ou
L'équivalent des requêtes IN et NOT IN dans LINQ to SQL serait quelque chose comme ceci:
et ça:
la source
Je suis d'accord que la meilleure façon d'implémenter l'opérateur In est d'utiliser une méthode d'extension. Je l'ai fait un peu différemment:
La différence est que vous n'avez pas à mettre de guillemets autour de chaque valeur, uniquement l'ensemble complet de valeurs délimitées par des virgules, ce qui est plus facile à taper:
la source
public static bool In(this string str, params string[] stringSet)
et appelez-le commebool result = myString.In("Val1", "Val2", "Val3")
Vous pouvez écrire une extension. J'ai écrit il y a une fois, pour créer du code comme
plus lisible avec une extension on a pu écrire
Voici le code :
C'est celui qui correspond à mes besoins à ce moment-là, mais vous pouvez l'adapter et le modifier pour qu'il corresponde à d'autres types.
la source
Pour les chiffres de 0 à 9:
Pour toute autre chose:
la source
Pour votre question mise à jour, vous pouvez également utiliser une instruction switch.
la source
Il n'y a pas d'opérateur in qui recherche une valeur dans une collection, c'est plutôt une méthode de la collection, appelée
Contains
.La solution la plus évolutive consiste à utiliser a
HashSet
comme collection. Vérifier une valeur dans aHashSet
est proche d'une opération O (1), par rapport à le faire dans aList
où il s'agit d'une opération O (n). Cela signifie que vous pouvez regrouper beaucoup de valeurs dans aHashSet
et que c'est toujours rapide, tandis que la recherche d'une valeur dans aList
devient plus lente plus vous avez de valeurs.Exemple:
la source
Commun, LINQ bien plus puissant:
la source
Le
in
mot clé en C # est pour l'foreach
instruction et pour les expressions de requête LINQ. Il n'y a pas de fonctionnalité équivalente à l'in
opérateur SQL en C # en soi, mais LINQ offre des fonctionnalités similaires avecContains()
.la source
Je fais quelque chose comme ça:
la source