Bonjour,
Mon but est de recherché si dans une liste<string>, il existe un élément peu importe la casse. Pour cela, j'ai utilisé la méthode BinarySearch, mais je n'ai pas eu les résultats que j'attendais et je ne comprend pas pourquoi. Pour être plus claire, voici mon code :
Donc j'aimerai comprendre pourquoi BinarySearch ne fait pas ce à quoi je m'attends. Je pense que j'ai du louper un truc, mais quoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 private bool isInListIgnoreCase(List<string> inList, string inItem) { int itemFound = inList.BinarySearch(inItem, StringComparer.OrdinalIgnoreCase); // J'ai essayé aussi avec StringComparer.InvariantCultureIgnoreCase et StringComparer.CurrentCultureIgnoreCase, le résultat est le même log("--- Verify " + inItem + " found in position " + itemFound); if (itemFound >= 0) { log(">>> Value " + inItem + " Found (" + inList[itemFound] + ")"); return true; } /** * comme je ne trouvais pas mes items avec la méthode BinarySearch, j'ai fait "à la main", ce à quoi je m'attendais comme résultat */ else { string vLowerItem = inItem.ToLower(); log("Second chance for " + inItem); foreach(string currentItem in inList) { if (currentItem.ToLower() == vLowerItem ) { log(">>> Value (2nd chance) " + inItem + " Found (" + currentItem + ")" ); return true; } } } return false; }
Merci![]()
Partager