Вы можете создать класс сортировщика, который реализует IComparer, и назначить его свойству ListViewItemSorter объекта ListView.
У IComparer есть метод Compare.Два экземпляра ListViewItem передаются этому методу.Вам нужно прочитать значение столбца, затем разобрать его в int и вернуть правильный результат сравнения (основанный на int вместо основанного на строке).
Вы можете создать свой собственный класс ListViewItem, который создает строковое значение для столбца, нотакже содержит исходное значение int, чтобы избежать вызова int.Parse в компараторе.
Непроверенный пример:
public class MyItemComparer : IComparer
{
public int Compare(object x, object y)
{
ListViewItem xItem = (ListViewItem)x;
ListViewItem yItem = (ListViewItem)y;
int a = int.Parse(xItem.SubItems[0]);
int b = int.Parse(yItem.SubItems[0]);
return a.CompareTo(b);
}
}