207 votes

Vérifier si une valeur est dans un tableau (C#)

Comment vérifier si une valeur se trouve dans un tableau en C# ?

Par exemple, je veux créer un tableau avec une liste de noms d'imprimantes.

Ces données seront transmises à une méthode qui examinera chaque chaîne à tour de rôle et, si la chaîne est identique à une valeur dans un tableau, effectuera cette action.

Par exemple :

string[] printer = {"jupiter", "neptune", "pangea", "mercury", "sonic"};
foreach (p in printer)
{
   PrinterSetup(p);     
}

Ce sont les noms des imprimantes, ils sont transmis à la méthode PrinterSetup.

PrinterSetup ressemblera à ceci (un peu de pseudocode) :

public void PrinterSetup(printer)
{
   if (printer == "jupiter") 
   {
      Process.Start("BLAH BLAH CODE TO ADD PRINTER VIA WINDOWS EXEC");
   }
}

Comment puis-je formater if (printer == "jupiter") d'une manière que C# peut reconnaître ?

380voto

Dmytro Tsiniavskyi Points 3126

Ajouter l'espace de nom nécessaire

using System.Linq;

Vous pouvez alors utiliser linq Contains() méthode

string[] printer = {"jupiter", "neptune", "pangea", "mercury", "sonic"};
if(printer.Contains("jupiter"))
{
    Process.Start("BLAH BLAH CODE TO ADD PRINTER VIA WINDOWS EXEC"");
}

60voto

string[] array = { "cat", "dot", "perls" };

// Use Array.Exists in different ways.
bool a = Array.Exists(array, element => element == "perls");
bool b = Array.Exists(array, element => element == "python");
bool c = Array.Exists(array, element => element.StartsWith("d"));
bool d = Array.Exists(array, element => element.StartsWith("x"));

// Display bools.
Console.WriteLine(a); // true
Console.WriteLine(b); // false
Console.WriteLine(c); // true
Console.WriteLine(d); // false

46voto

Guest Points 381

Ajouter using System.Linq; en haut de votre fichier. Ensuite, vous pouvez le faire :

if ((new [] {"foo", "bar", "baaz"}).Contains("bar"))
{

}

12voto

Rezo Megrelidze Points 615
    public static bool Contains(Array a, object val)
    {
        return Array.IndexOf(a, val) != -1;
    }

7voto

code4life Points 8797

Quelque chose comme ça ?

string[] printer = {"jupiter", "neptune", "pangea", "mercury", "sonic"};
PrinterSetup(printer);

// redefine PrinterSetup this way:
public void PrinterSetup(string[] printer)
{
    foreach (p in printer.Where(c => c == "jupiter"))
    {
        Process.Start("BLAH BLAH CODE TO ADD PRINTER VIA WINDOWS EXEC"");
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X