2011-06-06 4 views
16

J'ai une liste d'adresses IP comme suitComment trier la liste des adresses IP en utilisant C#

192.168.1.5 
69.52.220.44 
10.152.16.23 
192.168.3.10 
192.168.1.4 
192.168.2.1 

Je suis à la recherche d'une telle façon de trier cette liste pour correspondre au-dessous de l'ordre

10.152.16.23 
69.52.220.44 
192.168.1.4 
192.168.1.5 
192.168.2.1 

Répondre

42

Cela peut se présenter comme un hack, mais il fait exactement ce dont vous avez besoin:

var unsortedIps = 
    new[] 
    { 
     "192.168.1.4", 
     "192.168.1.5", 
     "192.168.2.1", 
     "10.152.16.23", 
     "69.52.220.44" 
    }; 

var sortedIps = unsortedIps 
    .Select(Version.Parse) 
    .OrderBy(arg => arg) 
    .Select(arg => arg.ToString()) 
    .ToList(); 
+2

C'est une méthode astucieuse! – ColinE

+0

Celui-là m'a fait LOL. – Tormod

+0

Cela vous donnera "10.152.16.23", "192.168.1.4", "192.168.1.5", "192.168.2.1", "69.52.220.44" – Norbert

10

vous pouvez convertir chaque adresse IP dans un entier comme si ...

69.52.220.44 => 

69 * 255 * 255 * 255 + 
52 * 255 * 255 + 
220 * 255 + 
44 

Puis triez par la représentation entière.

1

Cette fonction peut également vous intéresser.

Questions connexes