Я написал следующий IComparer, но мне нужна помощь. Я пытаюсь сортировать список чисел, но некоторые из чисел, возможно, не были заполнены. Я хочу, чтобы эти номера были отправлены в конец списка всегда ... например,IComparer для целых чисел и принудительных пустых строк до конца
[ УДАЛИТЬ] 1, [УДАЛИТЬ], 3, 2
стал бы ...
1, 2, 3, [УДАЛИТЬ], [УДАЛИТЬ]
и обратить вспять это стало бы ...
3, 2, 1, [EMPTY], [EMPTY]
Любые идеи?
public int Compare(ListViewItem x, ListViewItem y)
{
int comparison = int.MinValue;
ListViewItem.ListViewSubItem itemOne = x.SubItems[subItemIndex];
ListViewItem.ListViewSubItem itemTwo = y.SubItems[subItemIndex];
if (!string.IsNullOrEmpty(itemOne.Text) && !string.IsNullOrEmpty(itemTwo.Text))
{
uint itemOneComparison = uint.Parse(itemOne.Text);
uint itemTwoComparison = uint.Parse(itemTwo.Text);
comparison = itemOneComparison.CompareTo(itemTwoComparison);
}
else
{
// ALWAYS SEND TO BOTTOM/END OF LIST.
}
// Calculate correct return value based on object comparison.
if (OrderOfSort == SortOrder.Descending)
{
// Descending sort is selected, return negative result of compare operation.
comparison = (-comparison);
}
else if (OrderOfSort == SortOrder.None)
{
// Return '0' to indicate they are equal.
comparison = 0;
}
return comparison;
}
Cheers.
Wokred отлично. благодаря! – paulio
не ухудшит ли производительность, если у него больше чисел, чем пустых? – Amsakanna
@Veer: каким образом? –