using System; using System.Collections; using System.Windows.Forms; namespace Common.Forms { public class LviNameSurnameColumnComparer : IComparer { private int column; MySortOrder order; public LviNameSurnameColumnComparer() { column = 0; order = MySortOrder.Ascending; } public LviNameSurnameColumnComparer(int column, MySortOrder order) { this.column = column; this.order = order; } public int Compare(object x, object y) { string nameX = ((ListViewItem)x).SubItems[column].Text; string nameY = ((ListViewItem)y).SubItems[column].Text; string surnameX; string surnameY; switch (order) { case MySortOrder.Ascending: return String.Compare(nameX, nameY); case MySortOrder.Descending: return String.Compare(nameY, nameX); case MySortOrder.Ascending2: surnameX = (nameX.IndexOf(' ') > 0) ? nameX.Substring(nameX.IndexOf(' ') + 1) : nameX; surnameY = (nameX.IndexOf(' ') > 0) ? nameY.Substring(nameY.IndexOf(' ') + 1) : nameY; return String.Compare(surnameX, surnameY); case MySortOrder.Descending2: surnameX = (nameX.IndexOf(' ') > 0) ? nameX.Substring(nameX.IndexOf(' ') + 1) : nameX; surnameY = (nameX.IndexOf(' ') > 0) ? nameY.Substring(nameY.IndexOf(' ') + 1) : nameY; return String.Compare(surnameY, surnameX); default: return 0; } } } }