list<string>.BinarySearch en ignorant la casse
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 :
Code:
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;
} |
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 ?
Merci :)