En cherchant une réponse à cette question, je suis tombé sur des questions similaires utilisant LINQ, mais je n'ai pas été en mesure de les comprendre pleinement (et donc de les mettre en œuvre), car je n'y suis pas familiarisé. Ce que je voudrais faire, en gros, c'est ceci :
Honnêtement, je ne sais pas comment m'y prendre. Voici ce que j'ai trouvé (qui ne fonctionne pas, bien sûr) :
if (myList.Contains(myString))
string element = myList.ElementAt(myList.IndexOf(myString));
Je sais pourquoi ça ne marche pas :
myList.Contains()
ne renvoie pas true
, puisqu'il va vérifier si un élément entier de la liste correspond à la chaîne que j'ai spécifiée.myList.IndexOf()
ne trouvera pas d'occurrence, puisque, comme c'est encore le cas, il vérifiera si un élément correspond à la chaîne de caractères.Je n'ai toujours aucune idée de la façon de résoudre ce problème, mais je me dis que je vais devoir utiliser LINQ, comme cela est suggéré dans des questions similaires à la mienne. Ceci étant dit, si c’est le cas ici, j’aimerais que le répondant m’explique l’utilisation de LINQ dans son exemple (comme je l’ai dit, je ne m’y suis pas intéressé depuis que j’ai commencé à utiliser C#). Merci d'avance les gars (et les filles ?).
EDIT : J'ai trouvé une solution ; il suffit de faire une boucle dans la liste, de vérifier si l'élément actuel contient la chaîne de caractères, puis de définir une chaîne de caractères égale à l'élément actuel. Je me demande cependant s'il existe une méthode plus efficace que celle-ci.
string myString = "bla";
string element = "";
for (int i = 0; i < myList.Count; i++)
{
if (myList[i].Contains(myString))
element = myList[i];
}
Vous devriez être en mesure d'utiliser Linq ici :
var matchingvalues = myList
.Where(stringToCheck => stringToCheck.Contains(myString));
Si vous souhaitez simplement renvoyer le premier élément correspondant :
var match = myList
.FirstOrDefault(stringToCheck => stringToCheck.Contains(myString));
if(match != null)
//Do stuff
for (int i = 0; i < myList.Length; i++)
{
if (myList[i].Contains(myString)) // (you use the word "contains". either equals or indexof might be appropriate)
{
return i;
}
}
Les boucles à l'ancienne sont presque toujours les plus rapides.