Ничего особенного, но это должно работать.

Мне нужно отсортировать список IP-адресов в логическом порядке (т. Е. «192.168.0.2» предшествует «192.168.0.100»).List<string> ips = new List<string>();

В настоящее время (и правильно, в алфавитном порядке), если список содержит:

 возвращает:

192.168.0.1
192.168.0.2
192.168.0.10
192.168.0.200

ips.OrderBy(p => p)Еще одно очень умное решение для SO:

192.168.0.1
192.168.0.10
192.168.0.2
192.168.0.200
 Metro Smurf21 авг. 2011 г., 03:38

Ответы на вопрос(1)

Решение Вопроса

Вы можете написать

class IPComparer : IComparer<string> {
    public int Compare(string a, string b) {
        return Enumerable.Zip(a.Split('.'), b.Split('.'), 
                             (x, y) => int.Parse(x).CompareTo(int.Parse(y)))
                         .FirstOrDefault(i => i != 0); 
    }
}

Почему это было отвергнуто?

ips.OrderBy(p => p, new IPComparer()) 
 SLaks24 янв. 2011 г., 18:55
Очень умное решение.
 Metro Smurf21 авг. 2011 г., 03:40
 Jace Rhea24 янв. 2011 г., 19:02
Вау - действительно умно. Не уверен, почему это было понижено. Вот возмещение, чтобы компенсировать :)
 Adam Rackis24 янв. 2011 г., 19:39
Еще одно умное решение на SO:

Ваш ответ на вопрос