Tu peux faire quelque chose comme ça :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public int EntierCorrespondant(int valeur, List<int> ListeEntier)
{
int closest = 0;
bool first = true;
foreach (var i in ListeEntier)
{
if (first || Math.Abs(i - valeur) < Math.Abs(closest - valeur))
{
closest = i;
first = false;
}
}
return closest;
} |
Par contre il faudrait savoir ce que tu dois renvoyer si la liste est vide ; dans le code ci-dessus, ça renverra 0, ce qui n'est sans doute pas ce que tu veux. Le plus correct serait sans doute de lancer une exception dans ce cas.
Sinon tu peux aussi utiliser la méthode d'extension MinBy de Dvp.NET :
int result = liste.MinBy(i => Math.Abs(i - valeur));
Envoyé par
renovatio34
après imaginons que j'ai 10, 15 ,30, 9, 9 j'aimerai choisir l'un des deux 9 au hasard pour éviter un bug.
Bah ça change quoi ? que tu prennes le premier ou le deuxième, c'est toujours 9...
Partager