2011-06-06 40 views
16

我有IP地址的列表如下如何使用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 

我在尋找這樣的方式來對此列表進行排序,以匹配下面的順序來排序的IP地址列表

10.152.16.23 
69.52.220.44 
192.168.1.4 
192.168.1.5 
192.168.2.1 

回答

42

這可能看起來像一個黑客,但它不正是你所需要的:

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

這是一個狡猾的方法! – ColinE 2011-06-06 05:23:56

+0

那個讓我失望。 – Tormod 2011-06-06 05:26:25

+0

這會給你 「10.152.16.23」, 「192.168.1.4」, 「192.168.1.5」, 「192.168.2.1」, 「69.5​​2.220.44」 – Norbert 2011-06-06 05:38:35

10

您可以將每個IP地址轉換爲整數,像這樣......

69.52.220.44 => 

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

然後按整數表示進行排序。

1

您可能也覺得這個功能很有用。